3D куб проблема! Часть 1 - PullRequest
3 голосов
/ 08 июня 2011

Я создал 3D куб в iphone, используя CALayer's. Теперь я хотел повернуть этот куб (CALayer) на 90˚, когда пользователь дважды нажал на него.

Мне удалось один раз повернуть этот куб (CALayer) до 90˚, но когда я дважды коснулся куба (CALayer), он не вращался.

Вот код, который я использовал для вращения куба (CALayer)

CATransform3D x = CATransform3DRotate(currentLayer.sublayerTransform, M_PI / 2, 0, 0, 1);
currentLayer.transform = x;

Может ли кто-нибудь помочь в этом. Что я делаю не так.


PS. Для людей, которые задаются вопросом, как я получил знак степени, вот трюк

Опция + K

1 Ответ

2 голосов
/ 08 июня 2011

потому что вы не меняете угол поворота .... чтобы понять это, скажем, вы передаете M_PI / 2 каждый раз этому методу .... так что CATransform3DRotate не поворачивайте его в next 90˚он поворачивает слой на заданный угол, в данном случае его 90 ... так что вы не получаете никакого изменения, потому что он уже на 90˚ ....., чтобы получить правильный результат, сделайте это

static float angle = M_PI / 2;//dont make it static rather make it a global variable
angle += M_PI / 2;
CATransform3D x = CATransform3DRotate(currentLayer.sublayerTransform,angle, 0, 0, 1);
currentLayer.transform = x;
...