我正在尝试在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,依此类推,这在技术上就是我想要的。我的问题是有更好的方法吗?
非常感谢!
答案 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语句相同)。