我花了很多时间试图解决这个问题。所以,基本上我有一个类(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类来从Symbol1创建和删除这个eventListener但是我无法使addadd类创建这个eventListener从Symbol1发送“create”参数并通过发送“destroy”参数从Symbol2中删除它! !
如何从不同的对象创建和删除相同的eventListener?我发现这种方法创建并杀死了更有条理的听众,但我不确定这是否是正确的方法。 当我在主时间轴中的帧之间移动时,我遇到了侦听器的问题(错误:1009),因此我想在跳转到另一帧之前将它们全部删除。
由于
答案 0 :(得分:1)
您可以将public function
说,removeListeners()
和addListeners()
放在该类中,然后从其他类调用这些函数,就像这样,
class A ()
{
//constructor code
public function removeListeners():void
{
//remove listeners here
}
}
然后从您创建此“A”类实例的类(例如removeListeners()
)中调用此public function
Main.as
。