Поверните мувиклип на другой оси в позиции мыши As3 - PullRequest
1 голос
/ 27 марта 2011

Я ищу направление на этот старый эффект UFC - http://84.ufc.com/, который появляется на главной странице. Это ролики, вращающиеся по разным осям в зависимости от положения мыши. Пока я нашел этот скрипт:

stage.addEventListener(MouseEvent.MOUSE_MOVE,EnterFrame);
function EnterFrame(e:Event)
{
    mc.rotation = (180*Math.atan2(mouseY-mc.y,mouseX-mc.x))/Math.PI + 90;
}

Но это вращается только по x и y. Как подойти к этому эффекту? Пожалуйста, любые предложения. Я искал это месяцами.

Ответы [ 2 ]

1 голос
/ 28 мая 2012

Я только что узнал ...

import flash.events.Event;

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(event:Event):void
{
    anim.rotationX += ((stage.mouseY - stage.stageHeight/2)-anim.rotationX*3)  * 0.05;
    anim.rotationY += ((stage.mouseX - stage.stageWidth/2)-anim.rotationY*5)  * 0.05;
}
1 голос
/ 27 марта 2011

Если вы используете Flash CS4 + и нацелены на Flash Player 10+, вы можете использовать API-интерфейсы 3D DisplayObject (также называемые «открытки в космосе») для достижения этого эффекта!Все объекты DisplayObject будут иметь свойства x, y, z, rotationX, rotationY и rotationZ, которые можно настроить.

Создайте видеоклип и поместите его на сцену.Начало координат - перекрестие, которое появляется при выборе клипа - должно быть посередине сцены.Дайте мувиклипу имя экземпляра clip.

Дважды щелкните мувиклип и поместите в него другие мувиклипы.Используйте инструменты «Поворот 3D» и «Перевод», чтобы ориентировать эти клипы в 3D внутри родительского клипа.Вы можете найти 3D-инструменты на панели инструментов - у них есть иконка в виде яйца или нажать клавиши W или G. на клавиатуре.

Теперь вот простой код, который подправит ориентацию этого родителя.клип, основанный на положении мыши:

import flash.events.Event;

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(event:Event):void
{
    clip.rotationX = (stage.mouseY - stage.stageHeight/2) * 0.1;
    clip.rotationY = (stage.mouseX - stage.stageWidth/2) * 0.1;
}

Вы можете поиграть с этим, чтобы придумать множество других эффектов.Обратите внимание, что вы можете делать только простые 3D-эффекты с этими свойствами.Вы не можете выполнить полное 3D-вращение, потому что клипы не будут отсортированы сзади вперед.Для более сложных эффектов вам понадобится каркас, такой как Papervision3D или Five3D .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...