Просмотр полной версии : вращение вокруг оси!
помогите с простейшим вопросом. перешерстил поиск - не нашел. Как сделать вращение мувика вокруг своей оси и зациклить.
onClipEvent(enterFrame) {
_rotation--;
}
вращает вокруг себя самого, а мне надо вокруг центра, как колесо крутящееся.... Кроме того, надо не --, а =-5 к примеру, но он не зацикливает тогда...
сделай мивиклип с точкой регистрации в центре...
onClipEvent(enterFrame){
this._rotation-=5
}
а как ее в центре сделать?
Такой вопрос есть. А можно ли сделать так, чтобы вращался мувиклип с рывками? Имеется ввиду маленькие остановки, продолжительностью 1 сек. Как такое реализовать? = )
Роман Вадимович
06.07.2008, 01:54
Пропишите в первом кадре главной временно шкалы, где имя экземпляра Вашего колеса mc:
setInterval(function() { mc._rotation-=10; }, 1000);
В этом примере задержка равна 1000 мс.
Работает. Большое спасибо. : )
Но в моем случае мне нужно как то прописать код в сам мувиклип "mc".
Так как если я вписываю его в первый фрейм, после перемотки, колесо крутится все быстрее и быстрее X_X. Конечно я могу прописать стоп в первый кадр, но тогда мои "часы" останавливаются. Подскажите пожалуйста как изменить код, чтобы вставить его в "mc".
А зачем его туда вставлять?
На первом и втором фрейме у меня находятся часы. Мне нужно вставить крутящуюся шестеренку(мувиклип) на первый или второй фрейм.
И проблема такая.
Если я ставлю шестеренку на первый или второй фрейм с кодом
setInterval(function() { mc._rotation-=10; }, 1000);
то при воспроизведении клипа шестеренка с каждым циклом крутится все быстрее и быстрее, что естественно не допустимо. А если я пропишу Стоп в первый или второй фрейм, то останавливаются часы. =\
Должен быть всего один фрейм.
ну так а как центрировать-то??
Alex_beginner
07.07.2008, 16:14
Здравствуйте Форумчание!
Здравствуйте 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, а также хелп Флеша.
ну так а как центрировать-то??
Выберите таймфрейс вашего мувика ("зайдите" в свой клип), выделите всё содержимое, сгруппируйте его. А потом нажмите "Align horisontal center" и "Align vertical center" (это там, справа, панелька "Align&Info&Transform"), и не забудьте включить кнопку "To Stage:" .
о! сэнькс, мне тоже помогло (похожая задачка с пропеллером была)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.