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

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

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

Регистрация: Jul 2010
Адрес: Москва
Сообщений: 256
Записей в блоге: 1
По умолчанию Sprite rotation: попытка скромного новогоднего подарка

Дамы и господа!

Попытка скромного новогоднего подарка.

Если Вы создаете какой-то спрайт, а в дальнейшем хотите иметь вращательный эффект, причем с регулируемым центром, то его центр вращения при

Код AS3:
....drawRect(x0, y0, width, height);
будем выглядеть банально -

Код AS3:
(width - x0, height - y0)
У нас есть грань куба var kub:Sprite = new Sprite();

Код AS3:
var kub:Sprite = new Sprite();
kub.graphics.beginFill(0xFF666F);
kub.graphics.drawRect(-10, -10, 20, 20);
	// центр вращения (width - x0, height - y0)	
kub.x = 250;
kub.y = 250;
addChild(kub);
Итак, Вы вращение создаете Таймером

Код AS3:
function onTick(event:TimerEvent):void
{	kub.x = event.target.currentCount*2; // это поступательное движение, разумеется, 
	kub.y = event.target.currentCount*2; 
        kub.rotation += 15;	// а вот это уже вращение
} // function onTick(event:TimerEvent):void
(для полноты: Таймер до и после: )
Код AS3:
var myT:Timer = new Timer(50, 1000);
// создаете
Код AS3:
myT.start();
myT.addEventListener(TimerEvent.TIMER, onTick);
// прибавляете

Ответ на банальный вопрос: почему я такое считаю откровением? Дела в том, что в справочниках по языку ActionScript 3.0 при описании объектов Sprite, его свойства rotation абсолютно не сказано, как нужно задавать центр вращения.

Хотя, разумеется, вращение 3D куба куда более зрелищно...

С уважением

Влад

P.S. Разумеется, я совсем не против переноса темы в другой раздел. Например, "Новогодние поздралвения"


Последний раз редактировалось iNils; 01.01.2011 в 18:00.
Старый 01.01.2011, 17:58
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Что-то не понял, в чем вопрос.... Центр спрайта всегда в начале его координат, а где вы нарисуете графику в нем это уже ваше дело, он в любом случае он будет вертеться относительно своих x:0 y:0

Старый 01.01.2011, 19:07
wlad вне форума Посмотреть профиль Отправить личное сообщение для wlad Найти все сообщения от wlad
  № 3  
Ответить с цитированием
wlad

Регистрация: Jul 2010
Адрес: Москва
Сообщений: 256
Записей в блоге: 1
Тем не менее только такой код дает вращение вокруг центра куба...

Старый 01.01.2011, 19:28
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от wlad Посмотреть сообщение
Тем не менее только такой код дает вращение вокруг центра куба...
p.s. Вообще-то, это совершенно логично.

Старый 01.01.2011, 19:45
drnet_ua вне форума Посмотреть профиль Отправить личное сообщение для drnet_ua Найти все сообщения от drnet_ua
  № 5  
Ответить с цитированием
drnet_ua
 
Аватар для drnet_ua

Регистрация: Jul 2010
Адрес: 50° 27′ 0″ N, 30° 30′ 0″ E
Сообщений: 256
Записей в блоге: 2
имхо ерунда какаято

центром вращения будет точка 0,0. без вариантов

Старый 01.01.2011, 19:46
wlad вне форума Посмотреть профиль Отправить личное сообщение для wlad Найти все сообщения от wlad
  № 6  
Ответить с цитированием
wlad

Регистрация: Jul 2010
Адрес: Москва
Сообщений: 256
Записей в блоге: 1
Дорогой Samana!

Вы разожгли мой спортивный интерес: воспроизведите логику...

Я ведь даю вращение вокруг центра спрайта, а не левой верхней координаты...

Старый 01.01.2011, 20:10
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 7  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от wlad Посмотреть сообщение
Вы разожгли мой спортивный интерес: воспроизведите логику...
Метод drawRect начинает рисовать с указанных координат, и "растягивает" ширину и высоту в положительном направлении, то есть ширина увеличивается вправо, а высота вниз. Вот и получается что если рисовать квадрат, или прямоугольник из x:0 y:0, то точка вращения визуально выпадает на левый верхних угол нарисованного квадрата.


Последний раз редактировалось samana; 01.01.2011 в 20:14.
Старый 01.01.2011, 19:46
drnet_ua вне форума Посмотреть профиль Отправить личное сообщение для drnet_ua Найти все сообщения от drnet_ua
  № 8  
Ответить с цитированием
drnet_ua
 
Аватар для drnet_ua

Регистрация: Jul 2010
Адрес: 50° 27′ 0″ N, 30° 30′ 0″ E
Сообщений: 256
Записей в блоге: 2
нарисуйте куб не по центру, а вращение все равно будет вокруг точки 0.0

Добавлено через 10 минут
еще раз - вращение происходит вокруг точки 0,0

если вы нарисуете свой куб как:
-25,-25,50,50 - вращение по центру
0,0, 50,50 - верхний левый угол
-50,-50, 50, 50 - нижний правый угол

т.е. как было сказанно выше:

Цитата:
Центр спрайта всегда в начале его координат, а где вы нарисуете графику в нем это уже ваше дело, он в любом случае он будет вертеться относительно своих x:0 y:0

Старый 01.01.2011, 20:03
wlad вне форума Посмотреть профиль Отправить личное сообщение для wlad Найти все сообщения от wlad
  № 9  
Ответить с цитированием
wlad

Регистрация: Jul 2010
Адрес: Москва
Сообщений: 256
Записей в блоге: 1
Цитата из справочника:

http://livedocs.adobe.com/flash/9.0/...ay/Sprite.html

Цитата:
rotation : Number
Indicates the rotation of the DisplayObject instance, in degrees, from its original orientation.
Там ни гу-гу о центре вращения... А также о возможности регулировки...

Если не секрет: как Вы решали эту задачу?

Влад

Старый 01.01.2011, 20:21
wlad вне форума Посмотреть профиль Отправить личное сообщение для wlad Найти все сообщения от wlad
  № 10  
Ответить с цитированием
wlad

Регистрация: Jul 2010
Адрес: Москва
Сообщений: 256
Записей в блоге: 1
Жаль лишь, при описании свойств спрайтов такого там нет..

Мерси...

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

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

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


 


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


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