当前位置:  开发笔记 > IOS > 正文

我该怎么在iPhone上做多个动画?

如何解决《我该怎么在iPhone上做多个动画?》经验,为你挑选了1个好方法。

我想为一个游戏制作动画片,我想让这些片段向不同的方向移动,这样我现在的动画整个视图的方法将不再适用.

我想知道一次动画多个项目的最佳做法是什么.(注意我在2d渲染所以我目前对3d解决方案不感兴趣.)

谢谢!



1> Brad Larson..:

一次动画多个2-D对象相对容易.有两种方法可以解决它:动画UIViews或动画CALayers.在我的测试中,我发现在动画两者时性能上几乎没有差别(两者似乎都支持在iPhone上以60 FPS同时移动约50个物体).

要协调一系列UIViews的动画,您需要在开始/提交动画块中包含对视图几何的任何更改:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:ANIMATIONDURATIONINSECONDS];

view1.frame = CGRectMake(newX1, newY1, view1Width, view1Height); 
view2.frame = CGRectMake(newX2, newY2, view2Width, view2Height); 
// Add other views here

[UIView commitAnimations];

这将在ANIMATIONDURATIONINSECONDS秒的持续时间内将两个或多个视图的直线运动协调到新位置.如果希望视图彼此独立移动,请为每个视图创建单独的动画块.

要更好地控制动画或创建跨平台的Mac/iPhone UI代码,您可能希望使用Core Animation CALayers.CALayers默认设置动画,所以通过设置

layer.position = CGPointMake(newX, newY);

您的图层将自动设置为新位置的动画.请注意,默认情况下,图层的位置相对于其中心,您可以通过将其anchorPoint属性设置为0,0将其更改为正常原点位置.

您可以使用CATransaction协调​​图层动画:

[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:ANIMATIONDURATIONINSECONDS] forKey:kCATransactionAnimationDuration];      
layer1.position = CGPointMake(newX1, newY1);
layer2.position = CGPointMake(newX2, newY2);
[CATransaction commit];

对于更高级的动画,您可以创建CABasicAnimations和CAKeyframeAnimations并将其应用于图层,以便在具有特定时间和加速/减速的复杂路径上移动它们.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有