AS3 MovieClip not playing consistently

659 views Asked by At

So at the beginning when my SWF loads up it also loads up a sequence of animated clips like so:

var loader:Loader = new Loader();
loader.load(new URLRequest("clips/clip4.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, clip4Loaded);

And my clipLoaded function is:

private function clip4Loaded(e:Event):void {
    clip4 = e.target.content as MovieClip;
}

The clip4 file being loaded in has a stop() at the first frame. Later in the game (clip4 is the "outro") I use:

clip4.gotoAndPlay(0);
clip4.addFrameScript(clip4.totalFrames - 1, clip4End);

However, the clip only seems to play about 25% of the time and all the other clips which I load the exact same way play fine. The only difference is that those clips get played fairly soon after they load which leads me to believe clip4 is being autoreleased at some point but I really have no clue.

1

There are 1 answers

2
www0z0k On

strange - i've got a timeline-animated swf with stop(); in the first frame and the following code:

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);
        }
    }    
}  

and it works exactly as it's written.
could you please upload your clip4.swf anywhere (or test this code with it yourself)?