|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
Как найти слушателя?
В отрывке кода я создаю новый экземпляр класса, отправляю необходимые данные и создаю слушателя события. Нужно всё это, что бы разные элементы из массива (ссылки на экземпляры массива и есть "Spot") получили начальные координаты, конечные координаты и угол и начали свой движение. Но вот вопрос, а как я опосля смогу убить слушателя Энтер_фрейм, они будут появляться пачками, нужно убивать. Или придётся для каждого мувика наследовать этот класс и потом удалять (этот вариант я знаю как делать, но мороки много и добавляется ещё 7 классов).
public function fn_LocationSpot(i): void { gl_variable.indexSpot = i -1; var _t: int = 100; var _timer: Timer = new Timer(_t, i); _timer.addEventListener("timer", fn_TimerSpot); _timer.start(); } private function fn_TimerSpot(e: TimerEvent): void { var Spot = VectorSpot[gl_variable.indexSpot]; //углы********************************************************************************* var angl: Number =(Math.atan((man.y - Spot.y) / (man.x - Spot.x))) / Math.PI * 180; if(angl > 0) angl -= 180; Spot.rotation = angl + 90; //************************************************************************************** Spot.x = man.x; Spot.y = man.y; _stage.addChild(Spot); var j_x = (Math.random() * 1450) + 100; var j_y = (Math.random() * 750) + 180; playSpot = new PlaySpotClass (Spot, man.x,man.y, angl, j_x, j_y); _stage.addEventListener(Event.ENTER_FRAME, playSpot.fn_play); ++gl_variable.indexSpotInStage; if (gl_variable.indexSpot != 0) --gl_variable.indexSpot; if (gl_variable.indexSpot == 0) _stage.removeEventListener("timer", fn_TimerSpot); _stage.removeEventListener("timer", fn_TimerSpot); } } } package SpotClass { import flash.events.Event; import flash.display.MovieClip; public class PlaySpotClass extends MovieClip{ private var spot: MovieClip ; public var end_X: Number; public var end_Y: Number; public function PlaySpotClass(_spot, _x, _y, _rotation, _end_X, _end_Y) { spot = _spot; spot.x = _x; spot.y = _y; rotation = _rotation; end_X = _end_X; end_Y = _end_Y; } public function fn_play(e: Event):void{ //движение } } } |
|
|||||
Регистрация: May 2012
Сообщений: 38
|
...... _stage.addChild(Spot); ...... playSpot = new PlaySpotClass (Spot, man.x,man.y, angl, j_x, j_y); _stage.addEventListener(Event.ENTER_FRAME, playSpot.fn_play); ..... 1) Если playSpot является наследником DisplayObject, то лучше 2) Если playSpot НЕ является наследником DisplayObject, то ... _stage.addEventListener(Event.ENTER_FRAME, onFrame); //единожды где-то _callbackPool:Vector.<Function> = new Vector.<Function>(); //единожды где-то ...... // В слушателе таймера: ........ playSpot = new PlaySpotClass (Spot, man.x,man.y, angl, j_x, j_y); _callbackPool.push(playSpot.fn_play); .... private function onFrame(e:Event){ for each(var f:Function in _callbackPool){ f(); } } |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
AleXXX спасибо!
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
Вопрос не в тему,
создаём любой слушатель, а потом можно хоть 10 раз написать removeEventListener(**) к нему, ругаться флеш не будет, с учётом того, что слушатель удалён уже с первого раза |
Часовой пояс GMT +4, время: 13:48. |
|
« Предыдущая тема | Следующая тема » |
|
|