2

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

谢谢

4

1 回答 1

1

你可以public function说,removeListeners()addListeners()那个类中并从其他类中调用这些函数,就像这样,

 class A ()
 {

      //constructor code


      public function removeListeners():void
      {

            //remove listeners here
      }
  }

然后从您创建此“A”类实例removeListeners() public function的类(例如)中调用它。Main.as

于 2013-04-07T15:08:55.920 回答