开发者

ActionScript 3.0 Getting the index [CLICK event] of a loaded movie Clip image

开发者 https://www.devze.com 2023-02-04 17:54 出处:网络
I am loading a set of thumbnail images from an array [hard coded] into a movieclip symbol on the stage. I have two arrays with the thumbnail and the full size image having the same index number. In ma

I am loading a set of thumbnail images from an array [hard coded] into a movieclip symbol on the stage. I have two arrays with the thumbnail and the full size image having the same index number. In many examples, "event.currentTarget.contentLoaderInfo.url" returns the full path to the image selected. i just wan开发者_JAVA技巧t the index number.

Adobe does not make is easy to figure out what other properties are available to me from the contentLoaderInfo. Is 'SelectedIndex' or something like that available?

Where does an inspiring AS programmer find the contentLoaderInfo properties and or methods available? Is url the only thing that us usable here?

Is there a better approach?

Thanks in advance.

Edit:

var thumbnails:Array = ["tn_2010OpenHouse_00.jpg","tn_2010OpenHouse_01.jpg"];
var images:Array = ["2010OpenHouse_00.jpg","2010OpenHouse_01.jpg"];
var thumbX:Number = 10;
var thumbY:Number = 623;
var loader:Loader = new Loader();
loader.load(new URLRequest("images/" + images[0]));
addChild(loader);
loadThumbs();

function loadThumbs():void
{
    var thumbLoader:Loader;
    var container:Sprite = new Sprite();
    container.width =  100;
    addChild(container);

    container.buttonMode = true;
        for (var i:uint = 0; i < thumbnails.length; i++)
    {
        thumbLoader = new Loader();
        thumbLoader.load(new URLRequest("images/" + thumbnails[i])); 
        thumbLoader.x = thumbX; 
        thumbLoader.y = thumbY;
        thumbX +=  100;
        container.addChild(thumbLoader);
        thumbLoader.addEventListener(MouseEvent.CLICK, thumbClicked);
        container.width +=  100;
        addChild(thumbLoader);
    }
    stop();
}

function thumbClicked(ev:MouseEvent):void
{
         //weltraumpirat's example 
    var index:int = thumbnails.indexOf ( ev.target.contentLoaderInfo.url );
    trace("Index= "+ index);
         //trying a different approach as well 
    index = thumbnails.indexOf ( ev.currentTarget.contentLoaderInfo.url );
    trace("Index= "+ index);
    loader.load(new URLRequest("images/" + images[index]));
}

Output: Index= -1 Index= -1 Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.


The contentLoaderInfo property returns a LoaderInfo class. You can view its properties here:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html


You can use array.indexOf() to return an object's index. Since I don't know the rest of your code, here's an approximate example:

function thumbClicked (ev:MouseEvent) : void {

    var index:int = thumbnails.indexOf ( ev.target.contentLoaderInfo.url );
    loader.load ( new URLRequest (fullSizeImages[index]) ) ;
}

Edit:

Since I didn't know the exact code you were using, I assumed you store the entire path to the picture in your array. In your code, you prepend "images/", so the code should be:

function thumbClicked (ev:MouseEvent) : void {

    var index:int = thumbnails.indexOf ( ev.target.contentLoaderInfo.url.substring (7)); 
    // 7 is the length of "images/", so substring returns only the filename part.

    loader.load ( new URLRequest (fullSizeImages[index]) ) ;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消