|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
ветеран форума
|
В чем проблема то и какой именно код у Вас не работает?
В момент отпускания мыши проверяйте координаты объекта или мыши, если координаты находится за пределами сцены (а размеры сцены известны), возвращайте объект на место.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Координаты мыши за пределами сцены? ммм..
__________________
Reality.getBounds(this); |
|
|||||
ветеран форума
|
А что смущает то?
package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; public class TestMouseCoord extends Sprite { private var _tfInfo:TextField; private var _square:Sprite; private var _squareStartPoint:Point; public function TestMouseCoord() { if (stage) initInstance(); else addEventListener(Event.ADDED_TO_STAGE, initInstance); } private function initInstance(event:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, initInstance); _squareStartPoint = new Point(50, 50); _square = new Sprite(); _square.graphics.beginFill(0xCC0000); _square.graphics.drawRect(0, 0, 50, 50); _square.graphics.endFill(); _square.x = _square.y = 150; addChild(_square); _tfInfo = new TextField(); _tfInfo.autoSize = TextFieldAutoSize.LEFT; _tfInfo.defaultTextFormat = new TextFormat("Arial", 12, 0x000000); _tfInfo.x = _tfInfo.y = 10; addChild(_tfInfo); _square.addEventListener(MouseEvent.MOUSE_DOWN, square_mouseDownHandler); } private function square_mouseDownHandler(event:MouseEvent):void { _square.removeEventListener(Event.ENTER_FRAME, moveSquareBack); stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler); stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler); } private function stage_mouseUpHandler(event:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler); stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler); if ( !new Rectangle(0, 0, stage.stageWidth, stage.stageHeight).containsPoint(new Point(mouseX, mouseY)) ) { _square.addEventListener(Event.ENTER_FRAME, moveSquareBack); } } private function stage_mouseMoveHandler(event:MouseEvent):void { _tfInfo.text = "mouse:\t[ " + mouseX + " | " + mouseY + " ]" + "\nstage:\t" + stage.stageWidth + "x" + stage.stageHeight; _square.x = mouseX; _square.y = mouseY; event.updateAfterEvent(); } private function moveSquareBack(event:Event):void { if (_square.x == _squareStartPoint.x && _square.y == _squareStartPoint.y) { _square.removeEventListener(Event.ENTER_FRAME, moveSquareBack); } else { _square.x += (_squareStartPoint.x - _square.x) * .25; _square.y += (_squareStartPoint.y - _square.y) * .25; } } } }
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 20.07.2010 в 21:07. |
|
|||||
Регистрация: Nov 2009
Сообщений: 16
|
В IE флешка никогда не получает кординаты за пределами сцены. Также в IEшаке, если мышь выведена за пределы флешки при нажатой кнопке, при выходе не возникает ни каких событий - также и при отпускании кнопки за пределами. Проблема решается достаточно нудно и криво с использованием жаваскрипта. Если жаваскрипт недоступен, проблема не решается вовсе. Во всех остальных браузерах нормально работают Event.MOUSE_LEAVE при отжатой кнопке - или MouseEvent.MOUSE_OUT, MouseEvent.MOUSE_MOVE, MouseEvent.MOUSE_UP при перетаскивании за пределы сцены.
|
Часовой пояс GMT +4, время: 20:36. |
|
« Предыдущая тема | Следующая тема » |
Теги |
внутри , курсор , положение , сцены |
|
|