ActionScript 3.0 Получение индекса [событие CLICK] загруженного фильма Изображение клипа - PullRequest
0 голосов
/ 12 января 2011

Я загружаю набор миниатюрных изображений из массива [жестко запрограммировано] в символ видеоролика на сцене.У меня есть два массива с миниатюрой и полноразмерным изображением с одинаковым порядковым номером.Во многих примерах «event.currentTarget.contentLoaderInfo.url» возвращает полный путь к выбранному изображению.я просто хочу индексный номер.

Adobe не позволяет легко определить, какие другие свойства доступны для меня из contentLoaderInfo.Доступен ли «SelectedIndex» или что-то подобное?

Где вдохновляющий программист AS находит свойства и / или методы contentLoaderInfo?Является ли URL единственной вещью, которую можно использовать здесь?

Есть ли лучший подход?

Заранее спасибо.

Редактировать :

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]));
}

Вывод: индекс = -1 индекс = -1 ошибка # 2044: необработанный IOErrorEvent :.текст = ошибка # 2035: URL не найден.

Ответы [ 2 ]

1 голос
/ 12 января 2011

Свойство contentLoaderInfo возвращает класс LoaderInfo.Вы можете просмотреть его свойства здесь:

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

0 голосов
/ 12 января 2011

Вы можете использовать array.indexOf () , чтобы вернуть индекс объекта. Поскольку остальная часть вашего кода я не знаю, вот примерный пример:

function thumbClicked (ev:MouseEvent) : void {

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

Редактировать

Поскольку я не знал точного кода, который вы использовали, я предполагал, что вы сохраняете полный путь к изображению в своем массиве. В вашем коде вы добавляете «images /», поэтому код должен быть:

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]) ) ;
}
...