我有一个已加载到Loader数组中的图像数组。但是,我想知道这是否会占用大量资源来继续添加图像。
目标是当他们按下屏幕时,它将转到阵列中的下一个图像并显示它。当它到达终点时,它将重新开始。它们具有恒定的衰落图像流。再次,我想知道在这种情况下addChild是否继续向屏幕添加新图像,并最终会有很多彼此重叠,它将崩溃。最终的推出是针对移动应用。加载新图像后是否需要卸载上一张图像?这不是问题吗?
这是我的工作代码:
package com
{
import flash.display.MovieClip;
import flash.display.Stage;
import com.*;
import flash.events.*;
import flash.filesystem.File;
import flash.net.*;
import flash.display.*;
import com.greensock.*;
import com.greensock.easing.*;
//////////////////
public class pictures extends MovieClip
{
public var Images:Array = new Array();
public var RandomImages:Array = new Array();
public var c:int = 0;
public function pictures()
{
loadImages("Joyful","1");
this.addEventListener(MouseEvent.CLICK, displayImages);
}
public function loadImages(Decade:String,Mystery:String)
{
Images = [];
RandomImages = [];
var desktop:File = File.applicationDirectory.resolvePath("RosaryImages/"+Decade+"/"+Mystery);
var files:Array = desktop.getDirectoryListing();
for (var i:uint = 0; i < files.length; i++)
{
RandomImages.push("RosaryImages/"+Decade+"/"+Mystery+"/"+files[i].name);
trace(RandomImages[i]);
var my_loader:Loader = new Loader();
my_loader.load(new URLRequest(File.applicationDirectory.url + RandomImages[i]));
Images.push(my_loader);
}
displayImages();
}
public function displayImages(e:Event = null)
{
addChild(Images[c]);
TweenMax.fromTo(Images[c],2, {alpha:0}, {alpha:1, ease:Quint.easeOut} );
if (c < (Images.length) - 1)
{
c++;
}
else
{
c = 0;
}
}
}
}
答案 0 :(得分:1)
不,将整个图像集添加为子图像后,重复的addChild()
调用只会将有问题的DisplayObject置于显示列表的顶部,而不是创建另一个副本。所以,由于你问的原因,不应该发生崩溃。
我不建议卸载,但是从显示列表中删除,正如Lukasz在评论中所说的那样,不会浪费处理资源。