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

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

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

Регистрация: Jan 2008
Сообщений: 669
По умолчанию Координаты объекта, повернутого и вложенного в другой объект

Привет! Не могу никак разобраться с localToGlobal.
Пример. smallBall - это один шарик (синий), bigBall - это другой шарик(красный), который вложен в клип container. Все это лежит на сцене (Main).
Мне нужно, чтобы центр синего шарика совпал с центром красного. Это я сделал:
Код:
package
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	
	public dynamic class Main extends Sprite
	{
		public var sBall:MovieClip;
		public var bBall:MovieClip;
		
		public function Main()
		{
			init();
			this.sBall.addEventListener(MouseEvent.CLICK, changeCoors);
		}
		public function init():void
		{
			this.sBall = this.smallBall as MovieClip;
			this.bBall = this.container.bigBall as MovieClip;
		}
		public function changeCoors(event:MouseEvent):void
	    {
			var localCoors:Point = new Point(this.bBall.x, this.bBall.y);
			var globalCoors:Point = this.bBall.localToGlobal(localCoors);
			this.sBall.x = globalCoors.x - this.bBall.x;
			this.sBall.y = globalCoors.y - this.bBall.y;
	    }
	}
}
Но если красный шарик повернуть на некоторый угол, то данный код уже не работает как надо. Какие изменения нужно внести? Полагаю тут нужно полученные координаты домножать на синусы/косинусы. Проблема еще и в том, что нужно поворачивать надо не только сам красный шарик, но и его родителя....
Данный пример (шарики еще не повернуты) в аттаче


Последний раз редактировалось Kuruki; 27.11.2009 в 01:25.
Старый 07.11.2008, 22:49
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
все проще:
Код:
public function changeCoors(event:MouseEvent):void
{
	var globalCoors:Point = bBall.localToGlobal(new Point());
	sBall.x = globalCoors.x;
	sBall.y = globalCoors.y;
}

Старый 07.11.2008, 23:18
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 3  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Да уж... синусы, косинусы... Спасибо, silin!

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

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

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


 


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


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