未添加子项,检查索引时显示-1

时间:2014-05-07 14:26:43

标签: actionscript-3 flash actionscript

我不知道为什么我添加了孩子但是当我检查它的索引时它仍然显示-1。

我想做的是:

1.)循环URLRequest并加载位图图片。

2.)将它们放在单独的_contentHolder

3.)将所有内容放在视口中

4.)检查单击时的图像索引

5.)仅显示单击的图片(黑色背景)(图片浏览器)

6.)再次点击图片或背景时,它会关闭“图片查看器”(带黑色背景的单张图片),然后只显示之前的列表。

目前我可以在循环中上传图片,然后将它们添加到视口中,但我无法设法获取图像的索引并重新加载它。

谢谢你的时间!

代码:

public var _contentHolder:Sprite = new Sprite;
public var _contentHolder1:Sprite;
public var loadedArray:Array = new Array;
public var blackBox:Sprite = new Sprite();
private var somedata:Array;
protected var Holder:Listing9 = new Listing9;
public var viewport:Viewport = new Viewport();
public var scroller:TouchScroller = new TouchScroller();

var my_url:Array = somedata;

function loadImage():void
{
    somedata = SearchVectorTest.lists;

    for (var i:int = 5; i < somedata.length; i++)
    {
        if (somedata[i])
        {
            var loader:Loader = new Loader();
            loader.load(new URLRequest("http://www.rentaid.info/rent/" + somedata[i]));
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
        }
    }
}

function onImageLoaded(e:Event):void
{
    loadedArray.push(e.currentTarget.loader.content as Bitmap);

    for (var i:int = 0; i < loadedArray.length; i++)
    {
        var currentY1:int = 200;
        e.currentTarget.loader.content.height = 200;
        e.currentTarget.loader.content.y += currentY1;
        currentY1 += e.currentTarget.loader.content.height + 300;
        _contentHolder.mouseChildren = false; // ignore children mouseEvents
        _contentHolder.mouseEnabled = true; // enable mouse on the object - normally set to true by default
        _contentHolder.useHandCursor = true; // add hand cursor on mouse over
        _contentHolder.buttonMode = true;

        _contentHolder.addChild(loadedArray[i]);

    }

    var viewport:Viewport = new Viewport();

    viewport.y = 0;

    viewport.addChild(_contentHolder);

    var scroller:TouchScroller = new TouchScroller();
    scroller.width = 300;
    scroller.height = 265;
    scroller.x = 10;
    scroller.y = 100;
    scroller.viewport = viewport;
    addChild(scroller);

    _contentHolder.addEventListener(MouseEvent.CLICK, gotoscene);
}

loadImage();

public function gotoscene(e:MouseEvent):void
{
    var searchString = loadedArray;
    var index:Number;

    index = searchString.indexOf(e.target);
    trace(index);
    trace(_contentHolder);
    trace(_contentHolder.parent);

    blackBox.graphics.beginFill(0x000000);
    blackBox.graphics.drawRect(-1, -1, stage.width, stage.height);
    blackBox.alpha = 0.7;
    addChild(blackBox);
    Holder.height = 300;
    Holder.width = stage.width;
    Holder.x = 0;
    Holder.y = 100;
    trace(blackBox);
    trace(blackBox.parent);
    addChild(Holder);

}

function gotoscene1(e:MouseEvent):void
{
    removeChild(Holder);
    removeChild(blackBox);

}

1 个答案:

答案 0 :(得分:1)

indexOf您使用严格相等(===)。 e.target是Sprite类型,你的数组填充了Bitmaps。 严格的相等性将失败,因为对象的类型不同。

您需要使用相同类型的项目才能使比较成功。