2012-05-21 5 views
0
this.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent){this.startDrag(false,null);}); 

Привет, мне было интересно, почему выше не работает? Я пытаюсь перетащить спрайт вокруг экрана.Startdrag не является функцией

ответ

1

создать спрайт на сцену, добавьте имя экземпляра окна, добавить код к кадру один:

box.addEventListener(MouseEvent.MOUSE_DOWN, startMove); 

function startMove(evt:MouseEvent):void { 
    box.startDrag(); 
} 

box.addEventListener(MouseEvent.MOUSE_UP, stopMove); 

function stopMove(e:MouseEvent):void { 
    box.stopDrag(); 
} 

Я думаю, что ваш пример не работает из-за рамки «этого» в обработчике прослушивателя событий.

0

Если вы удалите this.; это будет работать. Это проблема с областью, поскольку вы используете анонимную функцию. Вы можете использовать currentTarget мероприятия, это также позволяет делать другие коробки перетаскиваемыми, если вы добавляете одни и те же прослушиватели.

Примечание: трудно удалить анонимную функцию в качестве слушателя событий и может вызвать утечку памяти, так что лучший способ заключается в использовании ссылки на именованной функции:

box.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseEvent); 
box.addEventListener(MouseEvent.MOUSE_UP, handleMouseEvent); 

function handleMouseEvent(event:MouseEvent):void 
{ 
    switch(event.type) 
    { 
     case MouseEvent.MOUSE_DOWN: 
     { 
     DisplayObject(event.currentTarget).startDrag(); 
     break; 
     } 
     case MouseEvent.MOUSE_UP: 
     { 
     DisplayObject(event.currentTarget).stopDrag(); 
     break; 
     } 
    } 
} 
Смежные вопросы