【发布时间】:2014-02-17 08:43:42
【问题描述】:
创建一个点触式游戏,每当用户点击交互的东西时,它就会显示一个提供 3 个选择的决策轮。行动、聊天或检查。我将所有内容集中在一个主要的触摸处理程序周围。因此,如果它是一个交互式对象,则创建一个新的决策轮并添加一个侦听器以在做出决策时调用,然后调用继续进行决策。在显示之前,我添加了一个深色覆盖,以便用户在做出决定之前不能篡改屏幕上的任何内容。
有什么更好的解决方法的建议吗?显然,我知道每次都创建一个新对象,然后在每次完成时调用 removeFromParent(true),这对性能来说是个坏主意。
传入的对象包含被触摸对象的属性。比如 id 和 x 和 y 位置,这样我就知道在屏幕上的哪个位置放置决策轮。
我的主要问题: 如何设置它,以便我只有一个决策对象,而不必在每次触摸某些东西时重新创建一个新实例?
override protected function createDecisionWheel(object:Object):void
{
if (!GameState.AWAITING_DECISION) {
//create bg overlay
_overlay = new Overlay();
addChild(_overlay);
//waiting for decision from user
GameState.AWAITING_DECISION = true;
_decisionWheel = new DecisionWheel(object);
addChild(_decisionWheel);
_decisionWheel.x = _decisionWheel.positionDecisionWheelX(object._x, _backgroundPosition);
_decisionWheel.y = _decisionWheel.positionDecisionWheelY(object._y, _backgroundPosition);
addEventListener("DecisionMade", proceedWithDecision);
}
}
override protected function proceedWithDecision(e:Event):void
{
removeEventListener("DecisionMade", proceedWithDecision);
//remove once decision has been made @TODO
_decisionWheel.removeDecisionWheel();
_overlay.removeOverlay();
//reset
GameState.AWAITING_DECISION = false;
trace("proceed with decision");
}
【问题讨论】:
-
不确定您要的是什么。你问的是 touchable = false 吗?
-
用一个主要问题更新了帖子:)
标签: actionscript-3 flash events object actionscript