将代码添加到actionpanel后,Adobe Flash Pro CS6电影循环播放

时间:2013-12-31 01:30:22

标签: actionscript-3 flash adobe

我遇到了问题但无法弄明白。当我测试场景时,一切都很好,我添加了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);
        }
    }

1 个答案:

答案 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');
}

如果您不想要那些变量和那个功能设置,那么您需要使用gotoAndStopgotoAndPlay转到框架,其中可以声明和/或初始化这些函数和变量,以及存储到内存中。然后他们就可以访问了。