在DocumentClass之外引用movieclip

时间:2011-07-19 13:40:53

标签: path movieclip

我有这个非常简单的ImageLoader类:

package 
{
    //
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.net.URLRequest;
    import flash.display.Loader;
    //
    public class ImageLoader extends MovieClip
    {
        var imageLoader:Loader;
        public function ImageLoader(img:String)
        {
            loadAsset(img);
        }
        //
        function loadAsset(url:String):void
        {
                    //warning here
            preloader.visible = true;
            imageLoader = new Loader();
            imageLoader.load(new URLRequest(url));
            imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
            imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
        }
        //;
        function imageLoaded(evt:Event):void
        {
                    //warning here
            imageLoaderClip.addChild(imageLoader);
            preloader.visible = false;
        }
        //
        function imageLoading(evt:ProgressEvent):void
        {
            var loaded:Number = evt.bytesLoaded / evt.bytesTotal;
            updateProgress(loaded);
        }
        //
        function updateProgress(value:Number)
        {
            preloader.progress.width = value * preloader.bar.width;
        }
    }
}

如果这是DocumentClass,这项工作非常完美。 但是,如果DocumentClass就像这样:

package  {
    import flash.display.MovieClip;
    public class LoadTest extends MovieClip {

        public function LoadTest() {
            var img = new ImageLoader("DSC04550.JPG");
        }
    }
}

由于舞台动画片段“preloader”和“imageLoaderClip”的存在,这不再起作用了。

哪种方法可以让事情发挥作用?我想将ImageLoader类的引用作为参数传递。在处理像这样的情况时,还有其他(更好的)方法吗?

1 个答案:

答案 0 :(得分:0)

是的,查看GreenSock的LoaderMax。它将使您的项目更容易一个数量级:

http://www.greensock.com/loadermax/