Вход

Просмотр полной версии : Передача переменной в событие


kynisa
05.08.2010, 18:19
Я почитал форум и понял что для этого нужно использовать LOLEvent (http://www.flasher.ru/forum/showpost.php?p=884839&postcount=11). А вот как использовать я не могу понять :(

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


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 :


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
вот такой вариант посмотри
имо, самый естественный (т.е. простой и ясный)
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
function 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
Спасибо еще раз!