事件监听器未被调用

时间:2015-02-19 06:03:22

标签: actionscript-3

如何解决我的问题?

当我点击按钮时,我加载了所有图像和图像按钮但之后当我尝试单击关闭按钮(图像4)时,事件监听器无法监听,因为所有内容都设置在另一个功能中。

private function onShop(evt:MouseEvent)
{
        shop.removeEventListener(MouseEvent.CLICK, onShop);

        var container:Sprite = new Sprite();
        var ibutton:Sprite = new Sprite();
        addChild(container);
        addChild(ibutton);
        ibutton.buttonMode = true;

        function loadImage(path:String):Loader
        {
           var request:URLRequest = new URLRequest(path);
           var loader:Loader = new Loader();
           loader.load(request);
           return loader;
        };

        var image1 = loadImage("image/inventory/shop_windoww.png");
        image1.x = 200;
        image1.y = 40;
        this.addChildAt(image1,8);
        var image2 = loadImage("image/inventory/title_window.png");
        image2.x = 200;
        image2.y = 14;
        container.addChild(image2);
        var image3 = loadImage("image/inventory/icon_window.png");
        image3.x = 177;
        image3.y = 7;
        container.addChild(image3);     
        var image4 = loadImage("image/inventory/close.png");
        image4.x = 891;
        image4.y = 39;
        ibutton.addChild(image4);       
        var image5 = loadImage("image/inventory/button_ok.png");
        image5.x = 450;
        image5.y = 485;
        ibutton.addChild(image5);       
        var image6 = loadImage("image/inventory/button_ok.png");
        image6.x = 782;
        image6.y = 485;
        ibutton.addChild(image6);       

        image4.addEventListener(MouseEvent.CLICK, test);

    }

    private function test(evt:MouseEvent)
    {
        image4.removeEventListener(MouseEvent.CLICK, test);
        trace("ca marche");
    }

1 个答案:

答案 0 :(得分:0)

在onShop范围之外声明您的变量。它们似乎更有意义作为全局变量,而不仅仅是本地变量(因为你试图在测试方法上使用onShop方法上声明的相同变量)。

我也向你推荐一些观点:

  • 使用外部文件(JSON / XML)获取所有图像URL,或者只使用带有硬编码内容的简单数组;
  • 使用for循环加载所有图像(遵循上一个建议后);
  • 在测试方法中使用event.currentTarget,因此,您可以使用更通用的方式处理这些图像。

[event.currentTarget]使用事件侦听器主动处理Event对象的对象。例如,如果用户单击“确定”按钮,则当前目标可以是包含该按钮的节点或已为该事件注册事件侦听器的其祖先之一。