this.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent){this.startDrag(false,null);});
Привет, мне было интересно, почему выше не работает? Я пытаюсь перетащить спрайт вокруг экрана.Startdrag не является функцией
this.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent){this.startDrag(false,null);});
Привет, мне было интересно, почему выше не работает? Я пытаюсь перетащить спрайт вокруг экрана.Startdrag не является функцией
создать спрайт на сцену, добавьте имя экземпляра окна, добавить код к кадру один:
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();
}
Я думаю, что ваш пример не работает из-за рамки «этого» в обработчике прослушивателя событий.
Если вы удалите 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;
}
}
}