Могу ли я создать EventListener в AS3 из одного объекта и удалить его из другого объекта?
Я потратил много времени, пытаясь решить эту проблему. Итак, в основном у меня есть класс (addadd), который содержит функцию, которая может создать eventListener и удалить eventListener. И у меня есть еще два объекта (Symbol1, Symbol2), которые сообщают функции, что делать - создавать или удалять.
package {
import flash.display.*;
import flash.events.Event;
import fl.motion.MotionEvent;
import flash.events.MouseEvent;
public class addadd
{
var stanishev:stanishev_line = new stanishev_line;
public function addadd()
{
// constructor code
}
public function stanishevF(par1)
{
if (par1 == "create")
{
Main.display.addChild(stanishev);
stanishev.name = "stanishev_child";
stanishev.x = -200;
stanishev.y = 500;
stanishev.gotoAndPlay("start");
stanishev.addEventListener(Event.ENTER_FRAME, frameDOstanishev);
}
else
{
trace ("asasasas");
stanishev.removeEventListener(Event.ENTER_FRAME, frameDOstanishev);
}
}
public function frameDOstanishev(e:Event)
{
trace (stanishev.currentFrame);
}
} }
package {
import flash.display.SimpleButton;
import flash.events.MouseEvent;
public class Symbol1 extends SimpleButton
{
var call_creator:addadd = new addadd;
public function Symbol1()
{
// constructor code
addEventListener(MouseEvent.MOUSE_OVER, eventResponse);
addEventListener(MouseEvent.MOUSE_DOWN, eventResponse2);
}
function eventResponse(e:MouseEvent)
{
call_creator.stanishevF("create");
}
function eventResponse2(e:MouseEvent)
{
call_creator.stanishevF("destroy");
}
} }
package {
import flash.display.SimpleButton;
import flash.events.MouseEvent;
public class Symbol2 extends SimpleButton
{
var call_creator:addadd = new addadd;
public function Symbol2()
{
// constructor code
addEventListener(MouseEvent.MOUSE_DOWN, eventResponse2);
}
function eventResponse2(e:MouseEvent)
{
call_creator.stanishevF("destroy");
}
} }
Поэтому я могу создать класс addadd для создания и удаления этого EventListener из Symbol1, но я не могу создать класс addadd для создания этого EventListener, посылая параметр "create" из Symbol1 и удаляя его из Symbol2, отправляя параметр "destroy"!!!
Как я могу создать и удалить один и тот же eventListener из разных объектов? Я обнаружил, что такой подход создает и убивает слушателей более организованно, но я не уверен, что это правильный путь. У меня проблемы со слушателями (ошибка: 1009), когда я перемещаюсь между кадрами на главной временной шкале, поэтому я хочу уничтожить их все, прежде чем перейти к другому кадру.
Спасибо
1 ответ
Вы можете положить public function
сказать, removeListeners()
а также addListeners()
в этом классе и вызвать эти функции из другого класса, например,
class A ()
{
//constructor code
public function removeListeners():void
{
//remove listeners here
}
}
Тогда позвони removeListeners()
public function
из класса (например, Main.as
) где вы создали экземпляр этого класса "A".