0
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 から直接コピーして貼り付けたものであり、変数を使用していないため、ルートが正しいと確信しています。

何が問題なのか手がかりはありますか?

4

1 に答える 1

0

コードを見ずに手助けするのは難しいですInventoryNavが、おそらく問題は、テストの前にイベントリスナーを削除する必要があることです.

また、1 つを使用して引数を渡す代わりに、2 つの異なるハンドラーを作成する必要があります。

役立つ可能性のあるコードの修正版を次に示します。

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");
            }
        }
    }
}
于 2013-05-10T00:57:04.267 に答える