Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отследить перемещение объекта (http://www.flasher.ru/forum/showthread.php?t=123315)

iforev 30.03.2009 16:10

Отследить перемещение объекта
 
Требуется создать событие, которое будет происходить при перемещении объекта.
Пробовал так:

Код:

override public function set x(value:Number):void{
                        dispatchEvent(new Event('qwerty'));
}

событие происходит, но перестает изменяться координата.
Возможно, такое событие где-то уже есть и я просто его не нашел. Тогда буду благодарен за указание на него

Dimonte 30.03.2009 16:14

В вашем коде очень не хватает строки
Код:

_x = value;
тогда и координата будет меняться :)

Merlinn 30.03.2009 16:18

поробуйте так
function set tX(x:int):void{
dispatchEvent(new Event('onXChange'));
this.x = x;
}
ну и соответственно меняете не x, а tX

BlooDHounD 30.03.2009 16:21

Код AS3:

public override function set x(value:Number):void{
        if ( super.x == value ) return;
        super.x = value;
        super.dispatchEvent(new Event('qwerty'));
}


iforev 30.03.2009 16:31

Спасибо, работает. Только решить задачу это не помогло. Я перемещаю объект с помощью startDrag и думал, что данное событие будет срабатывать постоянно при перемещении объекта, но так не происходит

Dimonte 30.03.2009 16:37

Функция set x вызывается только когда вы ставите вручную значение x.
Чтобы событие срабатывало при перемещении, вам, по-моему, придется вешать ENTER_FRAME эвент или подобный на перетаскиваемый объект.

iforev 30.03.2009 16:38

ENTER_FRAME сейчас применяю, но хотелось чего-нибудь менее ресурсоемкого

CrazyFlasher 30.03.2009 16:39

можно с таким же успехом сделать
Код:

override public function startDrag():void
у кастомного класса и переписать как надо

Dimonte 30.03.2009 16:41

CrazyFlasher, а разве startDrag не вызывается единожды в, собственно, начале перетаскивания?

CrazyFlasher 30.03.2009 16:53

не...я имею ввиду полностью переписать на enter_frame и не вызывать super.startDrag


Часовой пояс GMT +4, время: 23:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.