Когда вы собираетесь удалить событие, вы используете новый экземпляр myFunction, а не тот, с которым вы добавили его. Вам нужно либо объявить функцию, как любую другую функцию, и использовать аргументы события для проверки позиции кнопки, как. Думаю, вам нужны свойства stageX и stageY:
http://www.adobe.com/livedocs/flex/3/langref/flash/events/MouseEvent.html
// This function adds or deletes an event listener
function listentoButton (isTrue:int, position_x:int, position_y:int):void {
if (isTrue == 1) {
this["button_position_"+(position_x)+"_"+(position_y)].addEventListener(MouseEvent.CLICK, myFunction);
} else {
this["button_position_"+(position_x)+"_"+(position_y)].removeEventListener(MouseEvent.CLICK, myFunction);
}
}
function myFunction(eventArg:MouseEvent):void {
//use MouseEvent
};
Или вы можете создать небольшой класс MyFunctionParameters для хранения информации о координатах и создать новый экземпляр этого класса, добавить его в коллекцию, индексированную координатами x и y, и позже, когда вы отправитесь удалять событие, вы найдите экземпляр MySpaceParameters в коллекции на основе координат x и y, затем используйте его для удаления функции.
class MyFunctionParameters
{
public x:int;
public y:int;
function myFunction(eventArg:MouseEvent):void {
userClickedPosition(x,y);
};
}