actionscript 3 - removeEventListener not working -
function drag(event:mouseevent):void { if ((event.target.parent == inventorymenu) && (event.target 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 item)) { var dropped:item = item(event.target); if ((event.target 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")); } } } } }
for reason removeeventlistener on inventoryarrowdown , inventoryarrowup isn't working. i'm sure route correct it's direct copy paste addeventlistener , uses no variables.
any clue what's wrong?
hard without seeing code of inventorynav
maybe issue should remove event listeners before tests.
also, should write 2 different handlers instead of using 1 , passing argument do.
here modified version of code might help:
private function drag(event:mouseevent):void { if ((event.target.parent == inventorymenu) && (event.target 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 item)) { var dropped:item = item(event.target); if ((event.target 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"); } } } }
Comments
Post a Comment