控制加载AS 3.0中的嗖嗖动画
问题描述:
我正在开发一个AS 3.0包装添加一些额外的东西,必须加载一些旧的和普通的帧框架SwishMax 3动画,然后能够阻止他们,播放他们,等等...控制加载AS 3.0中的嗖嗖动画
这里是我的代码:
package {
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.events.*;
[SWF(backgroundColor="#ffffff", frameRate="17", width="300", height="250")]
public class SwishMaxWrapper extends Sprite {
function SwishMaxWrapper() {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
addChild(loader);
var request:URLRequest = new URLRequest("swishy.swf");
loader.load(request);
}
private function completeHandler(event:Event):void {
var movie:MovieClip = event.target.content;
movie.stop();
}
}
}
动画载荷工作正常,但movie.stop()不会。哪里不对?
答
我测试了你的代码,它在我的机器上工作。我加载的SWF在主时间轴上有动画。 swishy.swf是否有可能不在主时间轴上的动画?也许动画是在另一个符号中,而该符号的一个实例在舞台上。无论如何,当您在上面的代码中调用stop()时,它只是告诉主时间轴停止,但舞台上的其他影片剪辑将继续前进。
我想这就是Simsoft所指出的。
我测试了你的代码,使用一个SWF,它在舞台上有一个带有动画的符号,并且我得到了你所描述的问题。
public function completeHandler(event:Event):void {
var movie:MovieClip = event.target.content;
movie.stop(); //doesn't work - main timeline is only one frame long
for(var i:int = 0; i<movie.numChildren; i++) {
var child:MovieClip = movie.getChildAt(i) as MovieClip;
if(child) { //need this test - if the cast to MovieClip fails, child will be null
child.stop(); //works
}
}
}
希望你没有嵌套在更深的层次更多的动画:我通过修改completeHandler()
如下固定它。如果是这样的话,你必须修改这个以继续观察每个孩子的孩子,并试图阻止他们的时间表。
无论如何,希望有所帮助。祝你好运!
答
stop()不是循环的,我认为问题在这里。
function ruleThemAll(target : DisplayObjectContainer, doStop : Boolean = true) : void
{
for(var i : uint = 0; i < target.childNum; ++i)
{
var child : DisplayObject = target.getChildAt(i);
// If it's a container, go into to stop children
if(child is DisplayObjectContainer)
ruleThemAll(child as DisplayObjectContainer, doStop);
if(child is MovieClip)
{
if(doStop)
MovieClip(child).stop();
else
MovieClip(child).play();
}
}
}
不...谢谢! – coma 2011-06-02 15:43:47