Проблема с 3D-кубом! Часть 1

Я создал 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


person Robin    schedule 08.06.2011    source источник


Ответы (1)


это потому, что вы не меняете угол поворота .... чтобы понять это, скажем, вы передаете 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;
person Amit Singh    schedule 08.06.2011
comment
Но я думал, что это в случае с CATransform3DMakeRotation - person Robin; 08.06.2011
comment
Вы также можете обнаружить, что использование CATransformLayer (если это еще не сделано) поможет. - person Marc; 03.12.2012