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