我花了很多时间试图解决这个问题。所以,基本上我有一个类 (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),所以我想在跳转到另一个帧之前将它们全部杀死。
谢谢