我为我们的游戏构建了一个标题序列,其中每个标题都是一个大约半屏大小的视网膜图像,我使用UIImageView
进行显示。
标题序列具有简单的3个阶段,因为它逐渐增长并淡入/淡出:
// 1. Fade in and grow
[UIView animateWithDuration:1.0f animations:^{
titleImageView.alpha = 1.0f;
titleImageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
} completion:^(BOOL finished) {
// 2. Stay opaque, grow a little more
[UIView animateWithDuration:2.0f animations:^{
titleImageView.transform = CGAffineTransformMakeScale(1.1f, 1.1f);
} completion:^(BOOL finished) {
// 3. Fade out, grow even further
[UIView animateWithDuration:2.0f animations:^{
titleImageView.alpha = 0.0f;
titleImageView.transform = CGAffineTransformMakeScale(1.3f, 1.3f);
} completion:nil];
}];
}];
在每个动画阶段开始时,当一帧或两帧掉落时会出现口吃。它在iPhone 4和iPad 3等旧硬件上特别引人注目,但它在iPad Air上甚至引人注目,这是令人惊讶的。
一些扣除:
UIImage
本身无关,因为我已尝试预加载数据并确保PNG已解压缩。此外,在动画的每个阶段都会发生口吃,即使它已经在屏幕上播放了一段时间。transform
每次更改时,CALayers当然不需要在CPU上重新创建任何图像数据吗?另请注意,我在后台进行了一些OpenGL ES图形处理(它是前景中带有UIKit控件的游戏),但过去没有引起任何问题......
答案 0 :(得分:2)
所以,它有点难看,但我同时用两种方法解决了它: