如何在 MovieClip 结束时启动 eventListeners?
How to start eventListeners at the end of a MovieClip?
我有我的游戏。第一帧是放置开始游戏按钮的地方——它带我到第二帧我有我的游戏关卡。在第二帧进入时播放淡入淡出的 MovieClip,在结束时我将 MovieClip(root).addChild(character);
输入可玩角色。
我的问题是键盘事件的 eventListeners 在主时间线代码中,如果我按下任何移动角色的键,它就会开始移动,即使它还没有出现,因为淡入淡出还没有完成.
有没有办法解决这个问题,或者我哪里做错了?
如果需要,我会 post 位我的代码。谢谢!
有很多方法可以解决这个问题,但我的建议是:
1) 在你的主时间线上,创建一个函数来添加你的角色和键盘监听器:
function beginPlaying():void {
addChild(character);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
// etc
}
2) 在你的fade MovieClip中,最后只需要调用这个函数:
MovieClip(root).beginPlaying();
这应该可以解决您当前的问题,并希望更容易处理任何类似的未来问题。
此解决方案有效,但存在潜在问题,因为控制游戏的代码现在部分隐藏在某些 MovieClip 中。我自己做过很多次,当我需要更改、查找或记住某些内容时经常遇到麻烦。
稍微好一点的解决方案是不直接调用某些根函数,而是简单地调度一个事件:
dispatchEvent(Event.COMPLETE); // or any custom event
所以现在您的动画片段不必调用根目录中的特定函数,它只需抛出一个事件,您的时间轴就可以有一个侦听器。
此外,建议删除推子动画片段中的所有代码。同样,您可以在根目录中为 Event.ENTER_FRAME
添加一个侦听器,并检查推子是否已完成 (fader.currentFrame == fader.totalFrames)
我有我的游戏。第一帧是放置开始游戏按钮的地方——它带我到第二帧我有我的游戏关卡。在第二帧进入时播放淡入淡出的 MovieClip,在结束时我将 MovieClip(root).addChild(character);
输入可玩角色。
我的问题是键盘事件的 eventListeners 在主时间线代码中,如果我按下任何移动角色的键,它就会开始移动,即使它还没有出现,因为淡入淡出还没有完成.
有没有办法解决这个问题,或者我哪里做错了?
如果需要,我会 post 位我的代码。谢谢!
有很多方法可以解决这个问题,但我的建议是:
1) 在你的主时间线上,创建一个函数来添加你的角色和键盘监听器:
function beginPlaying():void {
addChild(character);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
// etc
}
2) 在你的fade MovieClip中,最后只需要调用这个函数:
MovieClip(root).beginPlaying();
这应该可以解决您当前的问题,并希望更容易处理任何类似的未来问题。
此解决方案有效,但存在潜在问题,因为控制游戏的代码现在部分隐藏在某些 MovieClip 中。我自己做过很多次,当我需要更改、查找或记住某些内容时经常遇到麻烦。
稍微好一点的解决方案是不直接调用某些根函数,而是简单地调度一个事件:
dispatchEvent(Event.COMPLETE); // or any custom event
所以现在您的动画片段不必调用根目录中的特定函数,它只需抛出一个事件,您的时间轴就可以有一个侦听器。
此外,建议删除推子动画片段中的所有代码。同样,您可以在根目录中为 Event.ENTER_FRAME
添加一个侦听器,并检查推子是否已完成 (fader.currentFrame == fader.totalFrames)