2

この問題を解決するために多くの時間を費やしました。したがって、基本的には、eventListener を作成して eventListener を削除できる関数を含むクラス (addadd) があります。また、関数に何をすべきか (作成または削除) を伝える別の 2 つのオブジェクト (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