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

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

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

Регистрация: May 2008
Сообщений: 476
Здравствуйте Форумчание!
Здравствуйте shaltay!

Есть еще один вариант помимо _rotation класса MovieClip - использование класса Matrix.

Для этого Вы должны создать пять матриц:

1. матрица, определяющая мировую систему координат - mat_wrld;
2. матрица, определяющая радиус вращения - (mat_tmp и mat_wrld).
3. матрица, определяющая положение центра вращения - mat_translate.
4. матрица, определяющая угол вращения - mat_rotate.

Далее после подготовки всех матриц и выполнения необходимых умножений (конкатинаций матриц) устанавливаете значение свойства объекта transform.matrix равным полученной матрице и объект трансформируется.

Вот так выглядит код с использованием Matrix:

Код:
import flash.geom.Matrix;

var mat_rotate:Matrix = new Matrix();// создаем матрицу вращения
var mat_translate:Matrix = new Matrix();// создаем матрицу смещения по осям, задающая положение центра вращения
var mat_wrld:Matrix = new Matrix();//создаем мировую матрицу
var mat_tmp:Matrix = new Matrix();//временная матрица, используемая для хранения первоначальной мировой матрицы
mat_tmp.translate(120,0);//Задаем смещение объекта относительно центра вращения - радиус вращения
mat_translate.translate(250,250);//Задаем положение центра вращения
var A :Number = 0; //Задаем начальный угол

this.onEnterFrame = function():Void
{
	mat_wrld = mat_tmp.clone();//клонируем временную матрицу в мировую матрицу
	angle_rad = A*Math.PI/180;//рассчитываем угол в радианах по градусам
	mat_rotate.identity();//Очищаем матрицу вращения
	mat_rotate.rotate(angle_rad);//задаем матрицу вращения
	mat_wrld.concat(mat_rotate);//умножаем матрицы (конкатинация) мировую и вращения
	mat_wrld.concat(mat_translate);//умножаем матрицы мировую и смещения
	myClip.transform.matrix = mat_wrld;//трансформируем объект myClip
	A = A+1;//увеличиваем угол
Во вложении пример. Если, что не понятно пишите. Если хотите изучить вопрос глубже изучайте документацию по DirectX, а также хелп Флеша.
Вложения
Тип файла: rar Пример 2D вращения с использованием Matrix.rar (5.0 Кб, 247 просмотров)
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось Alex_beginner; 07.07.2008 в 16:20.
Старый 10.07.2008, 20:40
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 12  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Цитата:
Сообщение от shaltay Посмотреть сообщение
ну так а как центрировать-то??
Выберите таймфрейс вашего мувика ("зайдите" в свой клип), выделите всё содержимое, сгруппируйте его. А потом нажмите "Align horisontal center" и "Align vertical center" (это там, справа, панелька "Align&Info&Transform"), и не забудьте включить кнопку "To Stage:" .

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

Регистрация: Sep 2008
Сообщений: 2
Отправить сообщение для Helavin с помощью ICQ
о! сэнькс, мне тоже помогло (похожая задачка с пропеллером была)

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

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

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


 


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


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