Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 使用actionscript 3卸载加载程序_Actionscript 3_Slideshow_Loader - Fatal编程技术网

Actionscript 3 使用actionscript 3卸载加载程序

Actionscript 3 使用actionscript 3卸载加载程序,actionscript-3,slideshow,loader,Actionscript 3,Slideshow,Loader,您好,非常感谢您的收看。我花了太多时间挣扎 下面的代码将加载四幅图像的幻灯片,以及这些图像的缩略图。它很好用 我添加了一个名为“Invi_按钮”的按钮,当按下该按钮时,将使用removeChild命令删除构成幻灯片的3个加载程序 但这就是问题所在,幻灯片放映中涉及到3个加载器。removeChild命令成功地删除了其中一个加载程序(名为“loader3”),但没有删除另外两个加载程序(“container3”和“thumbLoader3”)。它返回一个错误,说明“访问未定义的属性thumbLoa

您好,非常感谢您的收看。我花了太多时间挣扎

下面的代码将加载四幅图像的幻灯片,以及这些图像的缩略图。它很好用

我添加了一个名为“Invi_按钮”的按钮,当按下该按钮时,将使用removeChild命令删除构成幻灯片的3个加载程序

但这就是问题所在,幻灯片放映中涉及到3个加载器。removeChild命令成功地删除了其中一个加载程序(名为“loader3”),但没有删除另外两个加载程序(“container3”和“thumbLoader3”)。它返回一个错误,说明“访问未定义的属性thumbLoader3”或“Container3”

有人能告诉我这是为什么吗?或者更好的方法是,如何使该按钮(Invi_按钮)卸载整个幻灯片放映

var images3:Array = ["ad_bona1.jpg", "ad_bona2.jpg", "ad_darkhawk1.jpg", "ad_darkhawk2.jpg"];

var thumbX3:Number = -375;
var thumbY3:Number = 220;

var loader3:Loader = new Loader();
loader3.load(new URLRequest("assets/ad_bona1.jpg"));
addChild(loader3);
loader3.alpha = 0;

loadThumbs3();

function loadThumbs3():void
{
var thumbLoader3:Loader;
var container3:Sprite = new Sprite();
addChild(container3);
container3.buttonMode = true;
for(var i3:uint = 0; i3 < images3.length; i3++)
{
thumbLoader3 = new Loader();
thumbLoader3.load(new URLRequest("assets/thumbs/" + images3[i3]));
thumbLoader3.x = thumbX3;
thumbLoader3.y = thumbY3;
thumbX3 += 85;
container3.addChild(thumbLoader3);
thumbLoader3.addEventListener(MouseEvent.CLICK, thumbClicked3);
}
}
function thumbClicked3(event:MouseEvent):void
{
var path3:String = event.currentTarget.contentLoaderInfo.url;
path3 = path3.substr(path3.lastIndexOf("/") + 1);
loader3.load(new URLRequest("assets/" + path3));
}


///PROBLEM BELOW, button removes only "loader3" and not the other two for some reason

invis_button.addEventListener(MouseEvent.CLICK, unload_loaders);

function unload_loaders(event:MouseEvent):void{
    removeChild(loader3);
    removeChild(thumbLoader3);
    removeChild(container3);
 }
var-images3:Array=[“ad_-bona1.jpg”、“ad_-bona2.jpg”、“ad_-darkhawk1.jpg”、“ad_-darkhawk2.jpg”];
变量thumbX3:Number=-375;
变量thumbY3:数值=220;
var loader3:Loader=new Loader();
loader3.load(新的URL请求(“assets/ad_bona1.jpg”);
addChild(loader3);
loader3.alpha=0;
loadThumbs3();
函数loadThumbs3():void
{
var-thumbLoader3:加载程序;
var container3:Sprite=新Sprite();
addChild(container3);
container3.buttonMode=true;
对于(var i3:uint=0;i3
不确定这是否是你观察到的现象背后的全部原因。。。但对于初学者来说,“thumbloader3”和“container3”的作用域是loadThumbs3()方法的局部作用域,这意味着一旦执行完函数,Flash对这些对象的句柄就会丢失(更不用说处于完全不同的作用域中了)。。。尝试为这两个类创建类级属性。一旦这样做了,你应该能够成功地删除他们从舞台上以后

我希望您也正确地销毁了您的对象,并且为了简洁起见,您选择省略上面的代码

我已经编辑了上面的代码,并将属性放入适当的范围。(thumbLoader3的多个副本现在收集在一个向量(专用数组)中,以便在销毁它们时可以正确寻址)

我还给你写了一个正确的销毁方法

我还没有在我自己的机器上试过,但是试一试&看看效果如何

var images3:Array = ["ad_bona1.jpg", "ad_bona2.jpg", "ad_darkhawk1.jpg", "ad_darkhawk2.jpg"];

var thumbX3:Number = -375;
var thumbY3:Number = 220;

// begin new instance properties..
// created a new property, allowing you to group (and hold on to) the multiple thumbLoaders
var thumbLoader3Vector:Vector.<Loader> = new Vector.<Loader>();
var container3:Sprite;
// end new instance properties

var loader3:Loader = new Loader();

loader3.load(new URLRequest("assets/ad_bona1.jpg"));
addChild(loader3);
loader3.alpha = 0;

loadThumbs3();

function loadThumbs3():void
{

    // this is where container3 used to be declared

    container3 = new Sprite();
    addChild(container3);
    container3.buttonMode = true;
    for(var i3:uint = 0; i3 < images3.length; i3++)
    {
        var tPtr:int = thumbLoader3Vector.length;
        thumbLoader3Vector.push(new Loader());
        // this is where thumbLoader3 used to be declared & instantiated

        thumbLoader3Vector[tPtr].load(new URLRequest("assets/thumbs/" + images3[i3]));
        thumbLoader3Vector[tPtr].x = thumbX3;
        thumbLoader3Vector[tPtr].y = thumbY3;
        thumbX3 += 85;
        container3.addChild(thumbLoader3Vector[tPtr]);
        thumbLoader3Vector[tPtr].addEventListener(MouseEvent.CLICK, thumbClicked3);

    }
}
function thumbClicked3(event:MouseEvent):void
{
    var path3:String = event.currentTarget.contentLoaderInfo.url;
    path3 = path3.substr(path3.lastIndexOf("/") + 1);
    loader3.load(new URLRequest("assets/" + path3));
}


///PROBLEM BELOW, button removes only "loader3" and not the other two for some reason

invis_button.addEventListener(MouseEvent.CLICK, unload_loaders);

function unload_loaders(event:MouseEvent):void{

    // since the thumbLoader3 Loaders are children of container3 in the display list, we need to remove them first
    for(var $i:uint = 0;$i<thumbLoader3Vector.length;$i++)
    {
        removeChild(thumbLoader3Vector[$i]);
        // also make sure you remove the listener, so that the object will be picked up by garbage collection
        thumbLoader3Vector[$i].removeEventListener(MouseEvent.CLICK, thumbClicked3);
    }
    // and then just set the entire vector to null
    thumbLoader3Vector = null;

    // remove the loader3 object & set it to null
    removeChild(loader3);
    loader3 = null;

    // remove the container3 object & set it to null
    removeChild(container3);
    container3 = null;
 }
var-images3:Array=[“ad_-bona1.jpg”、“ad_-bona2.jpg”、“ad_-darkhawk1.jpg”、“ad_-darkhawk2.jpg”];
变量thumbX3:Number=-375;
变量thumbY3:数值=220;
//开始新实例属性。。
//创建了一个新属性,允许您对多个ThumbLoader进行分组(并保留)
var thumbLoader3Vector:向量=新向量();
变量容器3:雪碧;
//结束新实例属性
var loader3:Loader=new Loader();
loader3.load(新的URL请求(“assets/ad_bona1.jpg”);
addChild(loader3);
loader3.alpha=0;
loadThumbs3();
函数loadThumbs3():void
{
//这是container3过去声明的地方
container3=新精灵();
addChild(container3);
container3.buttonMode=true;
对于(var i3:uint=0;i3对于(var$i:uint=0;$i我无法告诉您我有多感激您的回复。我对as3还比较陌生,是否有代码可以用于为这些对象创建类级属性?编辑了我上面的帖子,以包含您提供的代码的修改版本