您的位置:首页 > 其它

Fleet Commander项目启动流程

2016-03-17 12:12 405 查看
1.Fleet Commander桌面项目界面启动流程

Main函数所在类InterstellarDesktop

-->在InterstellarDesktop类中,第32行初始化:InterstellarMain类

-->在InterstellarMain类中,第110行初始化:InterstellarGame主类

-->在InterstellarGame类中,第20行初始化:InterstellarCorver类

-->在InterstellarCorver类中,第103行,调用setST(ST_LOGO)进行第一个界面的启动

-->在UI_Logo绘制过程中,在UI_Logo的run方法中加载资源,加载完所有资源后,即在最后一步的第167行case totalLogoTime switch分支中第170行调用InterstellarCorver.setST(ST_MENU),使得带有start按钮的界面的启动。

2.游戏界面分为2层进行绘制。

1.游戏内部的调用paint(Graphics g)方法

@Override
public void paint(Graphics g, float offx, float offy) {
g.setColor(1, 1, 1, 1);
curGameUI.paint(g);
}
比如转动的星球等。

2.其它的像金币了之类的外围用paintHUD(Graphics g)绘制。

@Override
public void paintHUD(Graphics g) {
//		if(true)
//			return;
g.setColor(1, 1, 1, 1);
StaticsVariables.AllTime++;
runCircle();
StaticsVariables.runtime.runAllTime();
StaticsVariables.sound.runSoundAndMusic();
runEveryTime();
curGameUI.run();
curGameUI.paintHUD(g);
if (selLanguage.isVisible()) {
selLanguage.run();
selLanguage.paintHUD(g);
}

}

具体的paintHUD调用流程如下:

InterstellarCover

@Override
public void paintHUD(Graphics g) ;


-->SimpleGame

public void renderHUD(Graphics g) {
if (showLoading) {
drawLoading(g);// loading时不绘制其他
return;
} else {
currSubSys.paintHUD(g);
}
// 闪屏
if (splashRemain > 0) {
drawSplash(g);
}
}
3.游戏模块
<1>动画相关

Playerr 

<2>UI_Logo

带有启动和资源加载的界面

<3>UI_Menu

带有start按钮的界面

调用menuLoginAccountSuccess(LoginResponse lr)这个方法后,当登陆成功时,

1.setDialog(DIALOG_登陆成功);   //登陆成功  --jn

2.根据当前的第几次玩

<4>ST_BIGMISSION

带有星球转动的界面

<5>弹出二级框。

在UI_SignIn中,

弹框思路是: 弹二级框是:下面的两部分绘制,新的框也绘制。这样就实现了二级框。 

要是切换界面,就是:下面的不绘制了,只绘制新的就代表切换界面了。相当于控制界面的隐藏性来控制需要绘制的界面。

毕竟所有的界面都在Corver中new出来了,所以切换什么的,都比较快,也算是有一定好处.

@Override

public void paint(Graphics g) {
InterstellarCover.bigmission.paint(g);

}

@Override

public void paintHUD(Graphics g) {
InterstellarCover.bigmission.paintHUD(g);
drawMengban(g);
// 背景
curImgHUD.getAction(0).getFrameId(1).paintFrame(g, Global.halfHUDW, Global.halfHUDH, 0, false, 1f, 1f);
// 签到标题
// int month = (int)calendar.get(Calendar.MONTH) + 1;
...

}

<6>

public TaskList taskList;// 任务窗口第一个list,任务界面  //1任务  --jn

// 战斗消息.战斗日志

public BattleInfoList battleInfoList;// 战斗日志list //2战斗日志  --jn

//系统消息

public MailList mailList; //3 系统邮件  --jn

//活动消息

public ActivityList activityList; //4 活动消息  --jn

<7>

测试功能  if(true) return;

<8>ST_PVP_LOAD

带有教学的 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: