我想要停止一部电影,当它进入最后一帧时,我按照以下方式做了这个:
package{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
public class MeiYi extends Sprite{
private var mainMovie:MovieClip = new MeiYiMain(); //MeiYiMain is build in the library of flash cs4
function MeiYi():void{
//stop at last frame
mainMovie.addEventListener(Event.ENTER_FRAME, stopMainMovie);
//trace(mainMovie.totalFrames);
//mainMovie.gotoAndStop(50);
}
private function stopMainMovie(evt:Event):void{
//trace(mainMovie.currentFrame);
if (mainMovie.currentFrame == mainMovie.totalFrames){
mainMovie.stop(); //stop
}
}
}
}
但这对我没有任何意义,没有错误或我想要的东西。 它出什么问题了? 谢谢。
答案 0 :(得分:2)
一个简单的解决方案就是:
stop();
在MovieClip的最后一帧(MeiYiMain)。您可以通过选择它并按 F9 来调出ActionScript面板。
另请参阅live docs for class MovieClip中的totalframes
媒体资源:
中的总帧数 MovieClip实例。
如果影片剪辑包含多个 frames,totalFrames属性 返回的总帧数 影片剪辑中的所有场景。
这可能会在以后影响它。
答案 1 :(得分:0)
应该工作正常,这很奇怪。尝试为MeiYiMain
创建一个类,并在其中添加侦听器,而不是在MeiYi
内。
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class MeiYiMain extends MovieClip
{
/**
* Constructor
*/
public function MeiYiMain()
{
addEventListener(Event.ENTER_FRAME, _handle);
}
/**
* Handle
* @param e Event.ENTER_FRAME
*/
private function _handle(e:Event):void
{
if(currentFrame == totalFrames)
{
removeEventListener(Event.ENTER_FRAME, _handle);
trace('stopped');
stop();
}
}
}
}