我遇到了问题但无法弄明白。当我测试场景时,一切都很好,我添加了stop();到我的影片剪辑时间轴,一切都很好,直到没有代码添加到主舞台。一旦我开始向舞台添加代码,它就会开始循环播放?因为这个我遇到了问题,甚至无法进一步发展,因为即使是鼠标点击事件也不会循环...我试图添加的代码只是在点击播放后的一个简单的移动层按钮:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
introScreen.play_btn.addEventListener(MouseEvent.CLICK, clickAway);
function clickAway(event:MouseEvent):void
{
moveScreenOff(introScreen);
}
function moveScreenOff(screen:MovieClip):void
{
//Move the screen off...
var introTween = new Tween(screen,"x",Strong.easeInOut,screen.x,(screen.width)*-1,1,true);
//When the motion has finished...
introTween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinish);
function tweenFinish(e:TweenEvent):void
{
trace("tweenFinish");
//Establish the game state...
gameState = STATE_INIT_GAME;
trace(gameState);
//Fire off the gameLoop function at the frame rate of the movie...
addEventListener(Event.ENTER_FRAME, gameLoop);
}
}
答案 0 :(得分:0)
您的动画不断循环的原因是您的代码中存在错误。
Access of undefined property gameState.
Access of undefined property STATE_INIT_GAME.
Access of undefined property gameState.
Access of undefined property gameLoop.
您正在尝试引用尚未创建或不存在的成员。您的主时间轴从第1帧开始,您引用的代码尝试访问这些变量和gameLoop
方法。您需要在第一帧中设置变量以允许它们被引用。即在你的进口声明中:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
var gameState:String;
const STATE_INIT_GAME:String = "GAME_INIT";
然后你需要添加gameLoop
函数:
function gameLoop(e:Event):void {
trace('game loop running');
}
如果您不想要那些变量和那个功能设置,那么您需要使用gotoAndStop
或gotoAndPlay
转到框架,其中可以声明和/或初始化这些函数和变量,以及存储到内存中。然后他们就可以访问了。