AS3 Как создать двусторонний MovieClip, который при вращении показывает и другую сторону? - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть клип, который имеет два кадра. На первом кадре передняя сторона, на втором задняя. Я вращаю MovieClip по свойствам вращение X, вращение Y, вращение Z

Я хочу отобразить кадр 2, когда мувиклип вращается. Пожалуйста помоги. Я не хочу использовать класс PaperVision. Также, пожалуйста, рассмотрите Перспективный вид сцены.

Иногда мувиклип может зависеть не только от вращения. Он также в равной степени зависит от положения (только в перспективе).

Спасибо за рассмотрение моего вопроса.

С уважением, Sanket

PS: пожалуйста, проверьте проблему здесь http://sanket.info/as3/problem.gif

Ответы [ 3 ]

4 голосов
/ 16 февраля 2011

Просто чтобы добавить к существующим решениям, вот несколько готовых утилит:

Soulwire's Double Sided 3D Plane

HTH

1 голос
/ 16 февраля 2011

звучит так, как будто вы хотите определить, какую сторону вы видите, на основе поворота и угла перспективы вместе взятых.

вращение вы уже умеете читать.

и похоже, что угол перспективы основан только на изменении x (в зависимости от вашего изображения)

в игровом плане это все равно, что видеть глазами героя, который может только шагать влево и вправо, но не вперед или назад. Пожалуйста, подтвердите.

Если это так, я рекомендую найти угол перспективы с помощью чего-то подобного.

Это 2-я математика, как будто вы смотрите на свою камеру (как герой) и ваше изображение сверху. и найти угол между ними.

//find difference between hero and pic positions  (delta means difference or change)
var deltaPt:Point = new Point(pic.x - hero.x, pic.y - hero.y);
//find angle between hero and pic, then convert to degrees from radians
var angle:Number = Math.atan2(deltaPt.y, deltaPt.x) * 180 / Math.PI

var testAngle:Number = pic.rotation + angle;
trace("angle: "+angle);
trace("testAngle: "+testAngle);

проверьте, есть ли эти следы рядом с тем, что вы ожидаете увидеть.

возможно, угол должен быть отрицательным, а не положительным, или смещаться на 90º или что-то в этом духе (я склонен угадывать и проверять это немного, извините за наклон)

если ваш герой также может вращаться ... это может стать более сложным, или это может просто включать добавление вращения героя в микс, я еще не продумал эту часть.

как только вы настроите его правильно, оно должно закончиться чем-то вроде этого, что, я уверен, вы уже знаете.

if(testAngle > 90){gotoAndStop(2)}
else{gotoAndStop(1)};

надеюсь, что это поможет некоторым.

0 голосов
/ 15 февраля 2011

Проверьте эту ссылку.

http://codingfiend.com/examples/greeting_card/

Вместо того, чтобы использовать два кадра, сделайте переднюю и заднюю часть как два фрагмента ролика на одном кадре. Поместите их друг на друга, лицевую сторону сверху и переверните заднюю сторону горизонтально. Я использовал это событие ENTER_FRAME, чтобы отслеживать вращение, показывать и скрывать лицевую сторону карты. Я запускаю событие при нажатии на лицевую сторону карты, отслеживаю анимацию движения и убиваю событие, когда оно открывается. Возможно, вы могли бы также отслеживать положение и поворот, чтобы выполнить то, что вы ищете.

protected function oef(evt:Event):void
{
    var rot:Number = Math.round(_front.rotationY);

    if(rot >= 0 && rot <= 89)
    {
        _front.outside.visible = true;
    }
    else
    {
    _front.outside.visible = false;
    }           
}
...