Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Передача переменной в событие (http://www.flasher.ru/forum/showthread.php?t=143039)

kynisa 05.08.2010 18:19

Передача переменной в событие
 
Я почитал форум и понял что для этого нужно использовать LOLEvent. А вот как использовать я не могу понять :(

Вот фрагмент моего кода :

Код AS3:

import src.LOLEvent;
 
function displayExercise() {
        var i,j:Number;
        var s : String;
        for (i=1; i<=numexercise; i++) {
                for (j=1; j<=Ex[i].num; j++) {
                        var picloader:Loader = new Loader( );
                        s=String(i)+"_"+String(j);
                        //этому эвенту нужно передать s...
                        picloader.contentLoaderInfo.addEventListener(Event.INIT, picLoad);
                        picloader.load(new URLRequest(Ex[i].picName[j]));
 
                }
        }
 
        function picLoad(event:Event) {
                //...а здесь переданное s получить.
        }
 
}

Код LOLEvent.as :

Код AS3:

package src{
 
        import flash.events.Event;
 
        public class LOLEvent extends Event {
                public static const LOL:String='lol';
 
                private var _lol:String;
                public function get lol():Stirng {
                        return this._lol;
                }
 
                public function LOLEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, lol:String='') {
                        super(type, bubbles, cancelable);
                        this._lol=lol;
                }
 
                public override function clone():Event {
                        return new LOLEvent(super.type, super.bubbles, super.cancelable, this._lol);
                }
        }
}

как мне теперь объявить событие конца загрузки используя LOLEvent а не обычный евент как сейчас?

silin 05.08.2010 19:27

вот такой вариант посмотри
имо, самый естественный (т.е. простой и ясный)
Код AS3:

var loadMap:Dictionary = new Dictionary();
 
function displayExercise() :void
{
        var i:int, j:int;
        var s: String;
        for (i = 1; i <= numexercise; i++)
        {
                for (j = 1; j <= Ex[i].num; j++)
                {
                        var picloader:Loader = new Loader();
                        s = i + "_" + j;
                        loadMap[picloader.contentLoaderInfo] = s;
                        //этому эвенту нужно передать s...
                        //да, но можно не суетится, все будет понятно по targrt евента
                        picloader.contentLoaderInfo.addEventListener(Event.INIT, picLoad);
                        picloader.load(new URLRequest(Ex[i].picName[j]));
 
                }
        }
}
 
function picLoad(event:Event):void
{
        var targ:LoaderInfo = LoaderInfo(event.target);
        var str:String = loadMap[targ];
        trace( "str : " + str );//...а здесь переданное s получить.
 
}


kynisa 05.08.2010 19:45

спасибо большое, все работает!

* и теперь я знаю что такое Dictionary :) *

а как теперь в функции picLoad получить контент того лоадера, который загрузился? :(

silin 05.08.2010 20:11

f
Код AS3:

unction picLoad(event:Event):void
{
        var targ:LoaderInfo = LoaderInfo(event.target);
        var loader:Loader = targ.loader;
        var content:DisplayObject = loader.content;
}


kynisa 05.08.2010 21:46

Спасибо еще раз!


Часовой пояс GMT +4, время: 17:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.