使用数组列表删除影片剪辑?
Remove movieClips using array list?
我有一个列表数组,并使用数组对象名称创建图像占位符(示例:myArray[a,b])并从那里加载图像,并将数组列表作为文件夹名称。
最后创建了一个 movieClip 来加载它们并在舞台上显示。
现在我想删除它们调用相同的数组列表。
这里需要帮助...
我的代码如下:
for (var l: int = 0; l < ListArray.length; l++) {
var BookName: MovieClip = new bookThumb();
trace("\n[" + l + "]: " + ListArray[l]);
ImageFoldername = ListArray[l];
var bookImagePath: String = "file://" + File.userDirectory.nativePath.toString() + "/Books/" + ImageFoldername + "/Images/Icon.png";
trace(bookImagePath);
var ImagePlacer: Loader = new Loader;
var ImageURL: URLRequest = new URLRequest(bookImagePath);
ImagePlacer.load(ImageURL);
BookName.addChild(ImagePlacer);
BookName.name = ImageFoldername
addChild(BookName)
BookName.x = FirstBook_x;
BookName.y = FirstBook_y;
BookName.buttonMode = true;
BookName.mouseChildren = false;
BookName.addEventListener(MouseEvent.CLICK, IconSelected);
BookName.alpha = .8
BookName.addEventListener(MouseEvent.MOUSE_OVER, IconMouseOver);
BookName.addEventListener(MouseEvent.MOUSE_OUT, IconMouseOut);
FirstBook_x = FirstBook_x + 250;
}
因为您将 ImageFoldername
分配给每个 MovieClip
的 name
属性,您可以使用 getChildByName
找到它们并删除它们:
(注意:AS3 中的约定是对 类 使用 UpperCamelCase
,对变量和函数使用 lowerCamelCase
。我在下面编写了代码这个约定。)
for (var i:int = 0; i < listArray.length; i++) {
var imageFolderName:String = listArray[i];
var bookThumb:BookThumb = getChildByName(imageFolderName) as BookThumb;
if (bookThumb) {
removeChild(bookThumb);
}
}
另一种处理方法是将每本书的缩略图添加到列表中:
var bookThumbs:Array = [];
for (var i:int = 0; i < listArray.length; i++) {
var bookThumb:Bookthumb = new BookThumb();
bookThumbs.push(bookThumb);
// ...
}
然后将它们全部删除:
for each (var bookThumb:BookThumb in bookThumbs) {
removeChild(bookThumb);
}
bookThumbs.length = 0;
但可能 最简单 将它们全部删除的方法是将它们全部放在一个容器中,然后使用 removeChildren()
将它们全部删除:
var container:Sprite = new Sprite();
addChild(container);
for (var i:int = 0; i < listArray.length; i++) {
var bookThumb:Bookthumb = new BookThumb();
container.push(bookThumb);
// ...
}
// when you want to remove them all:
container.removeChildren();
我有一个列表数组,并使用数组对象名称创建图像占位符(示例:myArray[a,b])并从那里加载图像,并将数组列表作为文件夹名称。 最后创建了一个 movieClip 来加载它们并在舞台上显示。
现在我想删除它们调用相同的数组列表。
这里需要帮助...
我的代码如下:
for (var l: int = 0; l < ListArray.length; l++) {
var BookName: MovieClip = new bookThumb();
trace("\n[" + l + "]: " + ListArray[l]);
ImageFoldername = ListArray[l];
var bookImagePath: String = "file://" + File.userDirectory.nativePath.toString() + "/Books/" + ImageFoldername + "/Images/Icon.png";
trace(bookImagePath);
var ImagePlacer: Loader = new Loader;
var ImageURL: URLRequest = new URLRequest(bookImagePath);
ImagePlacer.load(ImageURL);
BookName.addChild(ImagePlacer);
BookName.name = ImageFoldername
addChild(BookName)
BookName.x = FirstBook_x;
BookName.y = FirstBook_y;
BookName.buttonMode = true;
BookName.mouseChildren = false;
BookName.addEventListener(MouseEvent.CLICK, IconSelected);
BookName.alpha = .8
BookName.addEventListener(MouseEvent.MOUSE_OVER, IconMouseOver);
BookName.addEventListener(MouseEvent.MOUSE_OUT, IconMouseOut);
FirstBook_x = FirstBook_x + 250;
}
因为您将 ImageFoldername
分配给每个 MovieClip
的 name
属性,您可以使用 getChildByName
找到它们并删除它们:
(注意:AS3 中的约定是对 类 使用 UpperCamelCase
,对变量和函数使用 lowerCamelCase
。我在下面编写了代码这个约定。)
for (var i:int = 0; i < listArray.length; i++) {
var imageFolderName:String = listArray[i];
var bookThumb:BookThumb = getChildByName(imageFolderName) as BookThumb;
if (bookThumb) {
removeChild(bookThumb);
}
}
另一种处理方法是将每本书的缩略图添加到列表中:
var bookThumbs:Array = [];
for (var i:int = 0; i < listArray.length; i++) {
var bookThumb:Bookthumb = new BookThumb();
bookThumbs.push(bookThumb);
// ...
}
然后将它们全部删除:
for each (var bookThumb:BookThumb in bookThumbs) {
removeChild(bookThumb);
}
bookThumbs.length = 0;
但可能 最简单 将它们全部删除的方法是将它们全部放在一个容器中,然后使用 removeChildren()
将它们全部删除:
var container:Sprite = new Sprite();
addChild(container);
for (var i:int = 0; i < listArray.length; i++) {
var bookThumb:Bookthumb = new BookThumb();
container.push(bookThumb);
// ...
}
// when you want to remove them all:
container.removeChildren();