切换语句和MovieClips currentFrame

时间:2014-03-07 18:58:42

标签: actionscript-3 switch-statement

我正在尝试在as3中创建一个switch语句,用于跟踪MovieClips currentFrame并根据其到达的帧更改textFields内容。

我想我已经很好地使用if和else语句进行了整理,但是想要抓住我的脑袋开关。下面是我的代码,目前正在做这个技巧,虽然我希望能得到一些更好的建议,因为我无法想象这是一种正确的方法。

animation.addEventListener(Event.ENTER_FRAME, videoFrames);
function videoFrames(evt:Event):void{
trace (evt.target.currentFrame)

switch (evt.target.currentFrame){
    case 50:
            if(evt.target.currentFrame <= 50){
            content_txt.htmlText = content1Text;

            }
        break;

    case 51:
            if(evt.target.currentFrame >= 51){
            content_txt.htmlText = content2Text;

            }
        break;

    default: 
    //trace("");
    break;
}

}

所以现在当动画低于50时,我得到content1Text,一旦超过50,我得到content2Text,依此类推,这在技术上就是我想要的。我的问题是有更好的方法吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

还有其他方法可以消除使用Event.ENTER_FRAME的需要,其中一种方法涉及一个名为addFrameScript的方法,当MovieClip到达某个帧时会运行一个函数。 @dst 是正确的,因为您的当前实现在到达第50帧或第51帧之前不会执行任何操作。此外,您的if语句不需要,它们与您的开关/案例的说法相同。以下是使用addFrameScript

执行此操作的一种方法
animation.addFrameScript( 50, toggleContentText );
animation.addFrameScript( 0, toggleContentText );

此addFrameScript采用第51帧和动画的第一帧,并运行下面的toggleContentText函数:

function toggleContentText():void {
    content_txt.htmlText = content_txt.htmlText == content1Text ? content2Text : content1Text;
}

此函数只检查content_text设置的字符串,并相应地切换它(与使用if / else语句相同)。