代码之家  ›  专栏  ›  技术社区  ›  Marc

使用png的ActionScript3动画,重新加载还是隐藏?

  •  1
  • Marc  · 技术社区  · 15 年前

    使用flash和actionscript 3,我想使用很多png作为动画。我现在使用一个Loader对象来加载这些图像。但现在我想知道展示这些动画的最佳方式是什么:

    每次必须显示一个新的png时,我可以使用加载程序来加载它,只需要一个加载程序:

    var image:Loader=new Loader();

    每次使用此函数时,都会将新图像用作动画的一部分:

    image.load(新的URLRequest(location));

    我还可以创建几十个加载程序,每个图像一个,并隐藏每个加载程序,除了我想显示的一个。当我想继续动画时,我隐藏当前动画并显示下一个。这意味着要创建大量的加载程序对象。

    哪种方式最好?或者还有第三种更好的方法可以做到这一点吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Cay    15 年前

    Flash IDE的主要目的正是。。。我知道很多人都不喜欢开发它,而且有充分的理由,但我真的认为在Flash中制作动画的理想工具是Flash IDE。

        2
  •  0
  •   Jeffrey Chee    15 年前

    执行以下操作:

    public class ImageLoader {  // Singleton class for explanation
    
        private static var imageLoader:Loader = new Loader();  // 1 loader only
        private static var currentImage:Bitmap = null;         // currently attached image
    
        public static function Initialize():void {
            imageLoader.contentLoaderInfo.addEventListener( Event.COMPLETE,  Rsc_Loaded );
        }
        public static function RenderImage( url:String ):void {
            imageLoader.load( new URLRequest( url ) );
        }
        private static function Rsc_Loaded( eEvent:Event ):void {
            if ( null != currentImage ) { // if previous bitmap was attached to stage
                  currentImage.parent.removeChild( currentImage ); // remove it
            }
            currentImage = eEvent.target.content; // Bitmap is loaded
    
            // attach the content to stage for rendering
            GetMainApp().stage.addChild( currentImage );
        }
    }    
    
        // then inside your main app. do below
    
        // load image 1 and add it to stage
        imageLoader.load("img1.png");
        // time to animate to img2.png
        imageLoader.load("img2.png");
    

    这不是最有效的方法,但是您可以添加一个缓存来预缓存所有图像并将它们附加到stage。或者如果您是硬核,可以阅读BitmapData类并执行自己的像素操作。