首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >removeEventListener不工作

removeEventListener不工作
EN

Stack Overflow用户
提问于 2013-05-09 22:56:15
回答 1查看 576关注 0票数 0
代码语言:javascript
复制
function Drag(event:MouseEvent):void {
    if ((event.target.parent == InventoryMenu) && (event.target is item)) {
        var picked:item = item(event.target);
        stage.addEventListener(MouseEvent.MOUSE_UP, Drop);
        InventoryArrowDown.addEventListener(MouseEvent.MOUSE_OVER, InventoryNav("down"));
        InventoryArrowUp.addEventListener(MouseEvent.MOUSE_OVER, InventoryNav("up"));

        function Drop(event:MouseEvent):void {
            if ((event.target.parent == InventoryMenu) && (event.target is item)) {
                var dropped:item = item(event.target);          
                if ((event.target is item) && (event.target.parent == InventoryMenu)) {
                    if (picked.itemdata("workswith") == dropped.name) {
                        var itemname:item = item(FetchResult(picked, dropped));
                        itemname.addChild(itemname.itemdata("filename"));
                        InventoryMenu.removeChild(picked);
                        InventoryMenu.removeChild(dropped);
                        InventoryMenu.addChild(itemname);
                        InventoryUpdate();
                    } else if (picked.name != dropped.name) {
                        trace("No son compatibles");
                    }
                    stage.removeEventListener(MouseEvent.MOUSE_UP, Drop);
                    InventoryArrowDown.removeEventListener(MouseEvent.MOUSE_OVER, InventoryNav("down"));
                    InventoryArrowUp.removeEventListener(MouseEvent.MOUSE_OVER, InventoryNav("up"));
                }
            }
        }
    }
}

由于某些原因,InventoryArrowDown和InventoryArrowUp上的removeEventListener无法工作。我相当确定路由是正确的,因为它是从addEventListener直接复制粘贴的,并且它不使用变量。

有什么问题的线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-10 08:57:04

如果不看InventoryNav的代码就很难帮到你,但问题可能是你应该在测试之前删除事件侦听器。

此外,您应该编写两个不同的处理程序,而不是像您那样使用一个处理程序并传递参数。

以下是您的代码的修改版本,可能会有所帮助:

代码语言:javascript
复制
private function drag(event:MouseEvent):void {
    if ((event.target.parent == inventoryMenu) && (event.target is Item)) {
        var picked:Item = Item(event.target);
        stage.addEventListener(MouseEvent.MOUSE_UP, drop);
        inventoryArrowDown.addEventListener(MouseEvent.MOUSE_OVER, inventoryNavDown);
        inventoryArrowUp.addEventListener(MouseEvent.MOUSE_OVER, inventoryNavUp);
    }
}

private function drop(event:MouseEvent):void {
    stage.removeEventListener(MouseEvent.MOUSE_UP, drop);
    inventoryArrowDown.removeEventListener(MouseEvent.MOUSE_OVER, inventoryNavDown);
    inventoryArrowUp.removeEventListener(MouseEvent.MOUSE_OVER, inventoryNavUp);

    if ((event.target.parent == inventoryMenu) && (event.target is Item)) {
        var dropped:Item = Item(event.target);          
        if ((event.target is Item) && (event.target.parent == inventoryMenu)) {
            if (picked.itemdata("workswith") == dropped.name) {
                var itemname:Item = Item(fetchResult(picked, dropped));
                itemname.addChild(itemname.itemdata("filename"));
                inventoryMenu.removeChild(picked);
                inventoryMenu.removeChild(dropped);
                inventoryMenu.addChild(itemname);
                inventoryUpdate();
            } else if (picked.name != dropped.name) {
                trace("No compatible sons");
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16464824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档