Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.07.2010, 15:42
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 11  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
В чем проблема то и какой именно код у Вас не работает?

В момент отпускания мыши проверяйте координаты объекта или мыши, если координаты находится за пределами сцены (а размеры сцены известны), возвращайте объект на место.
__________________
trace("Остановите Землю, я сойду!!!");

Старый 20.07.2010, 17:31
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 12  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Координаты мыши за пределами сцены? ммм..
__________________
Reality.getBounds(this);

Старый 20.07.2010, 20:34
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 13  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Координаты мыши за пределами сцены? ммм..
А что смущает то?

Код AS3:
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.
Старый 30.11.2010, 04:33
Sylon вне форума Посмотреть профиль Отправить личное сообщение для Sylon Найти все сообщения от Sylon
  № 14  
Ответить с цитированием
Sylon

Регистрация: Nov 2009
Сообщений: 16
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Координаты мыши за пределами сцены? ммм..
В IE флешка никогда не получает кординаты за пределами сцены. Также в IEшаке, если мышь выведена за пределы флешки при нажатой кнопке, при выходе не возникает ни каких событий - также и при отпускании кнопки за пределами. Проблема решается достаточно нудно и криво с использованием жаваскрипта. Если жаваскрипт недоступен, проблема не решается вовсе. Во всех остальных браузерах нормально работают Event.MOUSE_LEAVE при отжатой кнопке - или MouseEvent.MOUSE_OUT, MouseEvent.MOUSE_MOVE, MouseEvent.MOUSE_UP при перетаскивании за пределы сцены.

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
внутри , курсор , положение , сцены
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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