Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3 MovieClip播放不一致_Actionscript 3_Memory_Movieclip_Autorelease - Fatal编程技术网

Actionscript 3 AS3 MovieClip播放不一致

Actionscript 3 AS3 MovieClip播放不一致,actionscript-3,memory,movieclip,autorelease,Actionscript 3,Memory,Movieclip,Autorelease,因此,在开始加载我的SWF时,它也会加载一系列动画剪辑,如下所示: var loader:Loader = new Loader(); loader.load(new URLRequest("clips/clip4.swf")); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, clip4Loaded); 我的clipLoaded函数是: private function clip4Loaded(e:Event):void {

因此,在开始加载我的SWF时,它也会加载一系列动画剪辑,如下所示:

var loader:Loader = new Loader();
loader.load(new URLRequest("clips/clip4.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, clip4Loaded);
我的
clipLoaded
函数是:

private function clip4Loaded(e:Event):void {
    clip4 = e.target.content as MovieClip;
}
正在加载的clip4文件在第一帧有一个
stop()
。在游戏后期(clip4是“outro”),我使用:


然而,该剪辑似乎只播放了25%的时间,而我加载的所有其他剪辑都以完全相同的方式播放。唯一的区别是,这些剪辑加载后很快就会播放,这让我相信
clip4
会在某个时候自动播放,但我真的没有任何线索。

奇怪-我有一个带有
stop()的时间线动画swf和以下代码:

package {
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.net.URLRequest;

    /**
     *
     * @author www0z0k
     */
    [SWF(width='400', height='300', frameRate='30')]
    public class NewClass extends Sprite {
        private const URL:String = 'res/1.swf';
        private var spr:MovieClip;
        public function NewClass():void {
            var ldr:Loader = new Loader();
            ldr.contentLoaderInfo.addEventListener(Event.INIT, onloaded);
            ldr.load(new URLRequest(URL));
        }

        private function onloaded(e:Event):void {
            spr = e.target.content as MovieClip;
            addChild(spr);
            spr.addFrameScript(spr.totalFrames - 1, function():void { x = x == 0 ? 100 : 0; } );
            spr.addEventListener(MouseEvent.CLICK, onclick);
        }

        private function onclick(e:MouseEvent):void {
            spr.gotoAndPlay(0);
        }
    }    
}  
它的工作原理和它写的一模一样

你能把你的
clip4.swf
上传到任何地方吗(或者自己测试这个代码)?

所以你需要加载一个剪辑,停止它,然后播放一次?什么是
clip4End
?你能把它上传到任何地方吗?
clip4End
只是电影到达最后一帧时调用的一个函数。现在它所做的就是通过跟踪吐出一些数据。这基本上就是我的代码的工作方式。此外,主权财富基金本身并不重要。我用24个不同的swf电影文件进行了尝试,它们都产生了相同的行为。有时它会播放,但大多数时候不会。经过一些进一步的测试,我很确定它与
gotoAndPlay
有关,只是。。。无法播放。@ingot86-您确定每次都调用包含
gotoAndPlay
的函数吗?当必须播放动画时,您是否尝试手动切换到下一帧?
package {
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.net.URLRequest;

    /**
     *
     * @author www0z0k
     */
    [SWF(width='400', height='300', frameRate='30')]
    public class NewClass extends Sprite {
        private const URL:String = 'res/1.swf';
        private var spr:MovieClip;
        public function NewClass():void {
            var ldr:Loader = new Loader();
            ldr.contentLoaderInfo.addEventListener(Event.INIT, onloaded);
            ldr.load(new URLRequest(URL));
        }

        private function onloaded(e:Event):void {
            spr = e.target.content as MovieClip;
            addChild(spr);
            spr.addFrameScript(spr.totalFrames - 1, function():void { x = x == 0 ? 100 : 0; } );
            spr.addEventListener(MouseEvent.CLICK, onclick);
        }

        private function onclick(e:MouseEvent):void {
            spr.gotoAndPlay(0);
        }
    }    
}