Q:脚本的内聚

ScriptManager脚本管理器 管理的着脚本的update,draw

每条脚本的跳过都需要一个条件,

现在碰到了一个问题:

脚本本身跟游戏是紧密相连的,通过脚本来控制一些游戏的状态改变,

而脚本的跳过都是游戏来决定的。


解决方案

I 目前的

通过一个boolean变量mScriptEnd ,在游戏里调用设置,然后脚本update判断mScriptEnd 来跳过脚本。

	public void setScriptEnd(boolean scriptEnd) {
		mScriptEnd = scriptEnd;
//		error("scriptEnd" + scriptEnd);
	}

问题:

1.耦合太大,游戏调用脚本,脚本调用游戏

2.不支持并发

3.

II 预计的

脚本本身来判断脚本是否完成,从来避免了游戏调用脚本,确保了脚本本身的内聚。

目前难点:条件的判定



举个例子:单击装备按钮

I:在游戏单击按钮的地方加上

setScriptEnd(true)

脚本update里:

if(mScriptEnd) {
// 跳转脚本
setState(STATE_END);
}

II:在脚本自己的update里

if(btn.isTap()) {
// 跳转脚本
setState(STATE_END);
}


2012.6.11    改造中

1.目前支持AButton的单双击

2.


	/** 检测对象 */
	private Object mObjCheck;
	
	private enum TouchType {
		tap,        // 单击
		doubleTap,	// 双击	
	}
	private TouchType mCheckTouchType;
	
	// 设置
	mObjCheck =  scene.buttonMenu;
	mCheckTouchType = TouchType.tap;
	
	// 检测
	if (mObjCheck != null) {
		if (mObjCheck instanceof AButton) {
			AButton btn = (AButton) mObjCheck;
			if (mCheckTouchType.equals(TouchType.tap)) {
				skip = btn.isUp();
			} else if (mCheckTouchType.equals(TouchType.doubleTap)) {
				skip = btn.isDoubleClick();
			}
		} else if(mObjCheck instanceof AList) {
			AList list = (AList) mObjCheck;
			skip = list.getSelectIndex() != AList.NONE;
		} else if(mObjCheck instanceof BaseFighter) {
			BaseFighter bf = (BaseFighter) mObjCheck;
		}
	} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值