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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.12.2011, 00:39
fantomasdnb вне форума Посмотреть профиль Отправить личное сообщение для fantomasdnb Найти все сообщения от fantomasdnb
  № 1  
Ответить с цитированием
fantomasdnb

Регистрация: Aug 2011
Сообщений: 49
По умолчанию [as3isolib] Проблема с событиями мыши (MOUSE_MOVE).

Как вы видите, событие я честно слушаю с добавленной сцены 2, однако когда дело доходит до снятия текущих x и y, они берутся не со сцены, а с IsoSpirte с чайником. и поэтому выходит, то что есть.
Казалось бы, надо использовать закомментированные в коде mouseEnabled и mouseChildren. Вот только, у меня появилась надобность - добавить в мувиклип с чайником еще и кнопку, по нажатию на которую сам клип будет меньться. Но тогда mouseEnabled и mouseChildren не подходят. Как решить данную проблему?

Пример обработки события мыши onScene2MouseDown я взял из одного туториала в интернете. Если вы предложите иной способ, буду рад.

Приложу архив с SWFкой. Главный класс файла таков:
Код AS3:
private function initFunction(event:Event = null):void
{			
	//создаем сцены
	_scene = new IsoScene();
	_scene2 = new IsoScene();	
 
	//создаем стены///////////////////////////////////////////////			
	addingWall(300, 0, 250, 0, 0, 0, 0xBBBBBB, 0xffffff);			
	addingWall(0, 300, 250, 0, 0, 0, 0xDDDDDD, 0xffffff);		
	addingFlour(300, 300, 0, 0, 0, 0, 0x000000,1);	
 
	_scene2.addEventListener(MouseEvent.MOUSE_MOVE, onScene2MouseDown);				
 
	//создание вида///////////////////////////////////////////////
	_view = new IsoView();
	_view.setSize(800, 600);
	_view.centerOnPt(new Pt(50, 50, 0));
	_view.addScene(_scene);
	_scene.render();
 
	_view.addScene(_scene2);			
	this.addChild(_view);	
 
	//рендер//////////////////////////////////////////////////////
	this.addEventListener(Event.ENTER_FRAME, onRener);	
 
	//добавление чайника
	teapot = new IsoSprite();
	teapot.sprites = [Teapot];
	teapot.container.alpha = .7;
	//teapot.container.mouseEnabled = false;
	//teapot.container.mouseChildren = false;
	teapot.moveTo(0,0, 0);			
	_scene2.addChild(teapot);
}
 
private function onScene2MouseDown(e:ProxyEvent):void
{
	var me:MouseEvent = MouseEvent(e.targetEvent);
	var p:Pt = new Pt(me.localX, me.localY);
	var CELL_SIZE_NOW:uint = 10;
	IsoMath.screenToIso(p);			
 
	if (p.x > 180) p.x = 180;
	if (p.y > 180) p.y = 180;
	if (p.x < 0) p.x = 0;
	if (p.y < 0) p.y = 0;				
 
	teapot.moveTo(Math.floor(p.x / CELL_SIZE_NOW) * CELL_SIZE_NOW, Math.floor(p.y / CELL_SIZE_NOW) * CELL_SIZE_NOW, 0);
 
	trace(p.x, p.y);
}
Вложения
Тип файла: zip chairMoving.zip (442.2 Кб, 36 просмотров)

Старый 10.12.2011, 20:55
fantomasdnb вне форума Посмотреть профиль Отправить личное сообщение для fantomasdnb Найти все сообщения от fantomasdnb
  № 2  
Ответить с цитированием
fantomasdnb

Регистрация: Aug 2011
Сообщений: 49
временно решил отлавливанием координат с главной сцены, вычитанием сдвига изосцены и затем конвертированием в изометрические координаты:
Код AS3:
private function onScene2MouseDown(e:ProxyEvent):void
{
private function onScene2MouseDown(e:ProxyEvent):void
{
	var me:MouseEvent = MouseEvent(e.targetEvent);			
	var p:Pt = new Pt(me.stageX - 400, me.stageY - 250);			
	var CELL_SIZE_NOW:uint = 10;
	IsoMath.screenToIso(p);	
	trace(p.x, p.y);
 
	if (p.x > 180) p.x = 180;
	if (p.y > 180) p.y = 180;
	if (p.x < 0) p.x = 0;
	if (p.y < 0) p.y = 0;				
 
	teapot.moveTo(Math.floor(p.x / CELL_SIZE_NOW) * CELL_SIZE_NOW, Math.floor(p.y / CELL_SIZE_NOW) * CELL_SIZE_NOW, 0);
 
	//trace(p.x, p.y);
}
однако, хотелось бы решение покрасивее..

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

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

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


 


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


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