![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Неожидпнно возникла проблема с отловом события - аналогом AS 2.0 'onReleaseOuside'.
В хелпе сказано следующее про MouseEventType.MOUSE_UP: Цитата:
Вот демка: package {
import flash.display.Sprite;
import flash.events.*;
import flash.util.trace;
public class ReleaseOutSideDemo extends Sprite {
public function ReleaseOutSideDemo() {
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xcccccc);
sprite.graphics.drawRect(0, 0, 100, 100);
sprite.graphics.endFill();
sprite.addEventListener(MouseEventType.MOUSE_UP, onMouseUp);
addChild(sprite);
}
public function onMouseUp(e : MouseEvent):Void{
trace(e.type);
}
}
}
|
|
|||||
|
стервочка (я мужик)
|
Смотрим тутор у майка про палитру
![]() setCapture(); releaseCapture(); это типа намёки, но я тебе ничё не гворил, ок? |
|
|||||
|
>>Если рисовать в текущем и вешать обработчик MOUSE_UP на текущий спрайт, то ошибок нет, но события не диспатчатся ... Интересно было бы понять почему.
похоже потому, что события генерятся для DisplayObject, которых в этом случае нет, поставь parent.addEventListener(MouseEventType.MOUSE_UP, onMouseUp), и все заработает.. |
|
|||||
|
Еще вчера разобрался в примере silin'а testDistort посмотрел
![]() |
|
|||||
|
стервочка (я мужик)
|
тоСлин: Всё там диспатчится. и вешать на парент - это не отсюда.
|
|
|||||
package {
import flash.display.Sprite;
import flash.events.*;
import flash.util.trace;
public class ReleaseOutSideDemo extends Sprite {
public function ReleaseOutSideDemo() {
graphics.beginFill(0xcccccc);
graphics.drawRect(0, 0, 100, 100);
graphics.endFill();
addEventListener(MouseEventType.MOUSE_UP, onMouseUp);
}
public function onMouseUp(e : MouseEvent):Void{
trace(e.type);
}
}
}
>>и вешать на парент - это не отсюда не понял: что не отсюда.. ![]() |
|
|||||
|
стервочка (я мужик)
|
Вешать событие на родителя не катит. Это значит, что событие будет уже не самого объекта, а его родителя, а это не есть гуд. К тому же парента может и не быть. Всё таки это временная переменная, и тогда у тя посыпятся ерроры.
public function Box(w:Number = 30, h:Number = 255)
{
this.graphics.beginFill(0x000000);
this.graphics.drawRect(0, 0, w, h);
this.graphics.endFill();
this.addEventListener(MouseEventType.MOUSE_DOWN, this.onPress, true);
}
// функция срабатывает на нажатие
private function onPress(event:MouseEvent):Void
{
// ПРИМИЧАНИЕ: попробуйте закомментировать эту строку и повторить манипуляции
// Увидим, что при выводе мышки за границы объекта, происходит
// не то, что ожидается от неё.
this.setCapture();
// из-за неразберихи с областью действия и последовательностью обновления
// назначаем события обработки "отпускания" и "движения" после нажатия.
this.addEventListener(MouseEventType.MOUSE_MOVE, this.onMouseMove);
this.addEventListener(MouseEventType.MOUSE_UP, this.onRelease);
}
// функция срабатывает на отпускание мыши
private function onRelease(event:MouseEvent):Void
{
// удаляем события
this.removeEventListener(MouseEventType.MOUSE_MOVE, this.onMouseMove);
this.removeEventListener(MouseEventType.MOUSE_UP, this.onRelease);
// проводим не хитрую операцию, которая возвращает область захвата в исходное состояние
this.releaseCapture();
}
// функция срабатывает на движение мышки
private function onMouseMove(event:MouseEvent):Void
{
event.updateAfterEvent();
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:53. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|