Вращение ActionScript на 2 оси отличается от 1 оси - PullRequest
1 голос
/ 09 ноября 2010

У меня есть 2 DisplayObject, один из которых содержит другой, как показано ниже:

var sprite1:Sprite = new Sprite();</p> <p>sprite1.addChild(loader1); // assume that I have load picture on to loader1</p> <p>loader1.rotationZ = 30;</p> <p>sprite1.rotationZ = -30; Если я выполню приведенный выше код, изображение на loader1 будет выглядеть так, как будто оно вообще не вращалось, потому что его контейнер вращается в противоположном направлении. Что правильно, как я и ожидал.

Но если бы у меня было вращение на несколько осей к коду:

loader1.rotationZ = 30;</p> <p>loader1.rotationY = 50;</p> <p>sprite1.rotationZ = -30;</p> <p>sprite1.rotationY = -50;

Теперь loader1 будет вращаться под другим углом. Мой вопрос: почему это не компенсирует друг друга? Обратите внимание, что позиции x, y, z в loader1 и sprite1 находятся в 0,0,0. И эта проблема возникает независимо от поворота X, Y или Z. Если у вас есть 1 ось, она работает нормально. 2 оси, это не так.

Я публикую этот пример кода, потому что я пытаюсь понять, как Flash вращается в 3D. В документе AS3 утверждается, что он вращается вокруг своего «родительского контейнера 3D». Что это?

1 Ответ

0 голосов
/ 17 января 2011

Вращение относительно родительского объекта, и когда вы поворачиваете родительский объект, он изменит систему координат для дочернего объекта.Это не имеет значения, когда вы вращаетесь только вокруг одной оси, но имеет значение, когда вы вращаетесь вокруг двух.Чтобы отменить повороты, нужно отменить все из них в обратном порядке, в котором они были применены.

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

...