Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch 基于UIView的动画_Cocoa Touch - Fatal编程技术网

Cocoa touch 基于UIView的动画

Cocoa touch 基于UIView的动画,cocoa-touch,Cocoa Touch,我正在尝试为2D游戏制作一些UIImageView动画。使用[UiView begin/commit animation]是不可能的,因为我需要随时确定所有图像视图的位置。相反,我正在更改UIImageView中的frame.origin.x/y以手动控制动画。我的问题是,如果UIImageView的数量太多或其大小太大(顺便说一句,UIImageView包含带有透明颜色的PNG),帧速率会显著下降。你有什么优化建议吗 谢谢你为我准备的2D游戏 它很像Flash,具有开源的优点,并且与花栗鼠物理

我正在尝试为2D游戏制作一些UIImageView动画。使用[UiView begin/commit animation]是不可能的,因为我需要随时确定所有图像视图的位置。相反,我正在更改UIImageView中的frame.origin.x/y以手动控制动画。我的问题是,如果UIImageView的数量太多或其大小太大(顺便说一句,UIImageView包含带有透明颜色的PNG),帧速率会显著下降。你有什么优化建议吗


谢谢你为我准备的2D游戏

它很像Flash,具有开源的优点,并且与花栗鼠物理紧密集成。此外,riq正在进行出色的开发


你可以用Cocos做更多的事情,而不仅仅是游戏。绝对值得一看。

我会选择2D游戏

它很像Flash,具有开源的优点,并且与花栗鼠物理紧密集成。此外,riq正在进行出色的开发


你可以用Cocos做更多的事情,而不仅仅是游戏。绝对值得一看。

UIImageView非常适合为显示设置动画(UIView是CALayers周围的轻量级包装,只是存储在图形卡上的纹理),但您确实需要使用“开始/提交动画”块来获得平滑动画。使用它,您可以通过访问UIView的背景层并获取其表示层来检索视图的当前位置。Dustin Bachrach有一篇文章描述了如何做到这一点。基本上,表示层是核心动画在任何给定时间与实际层最接近的位置,因此其帧就是此时UIView的帧

我不确定触摸事件在屏幕上移动时是否会进入视图,因此如果需要UIImageView响应触摸,可能需要将其替换为CALayer,将其作为主UIView层的子层插入,并在该主层的presentationLayer上调用hitTest方法。如果单击,则返回移动层的presentationLayer,否则返回背景层


老实说,除非出于性能方面的考虑,否则我不会使用OpenGL,因为与核心动画为您提供的UIView和CALayers相比,编写OpenGL代码要困难得多。我已经能够使用UIView和CALayers以60 FPS(100 FPS,30 FPS)的速度为50个移动半透明层制作动画。

UIImageView非常适合为显示器制作动画(UIView是CALayers周围的轻量级包装,只是存储在图形卡上的纹理),但您确实需要使用“开始/提交”动画块来获得平滑动画。使用它,您可以通过访问UIView的背景层并获取其表示层来检索视图的当前位置。Dustin Bachrach有一篇文章描述了如何做到这一点。基本上,表示层是核心动画在任何给定时间与实际层最接近的位置,因此其帧就是此时UIView的帧

我不确定触摸事件在屏幕上移动时是否会进入视图,因此如果需要UIImageView响应触摸,可能需要将其替换为CALayer,将其作为主UIView层的子层插入,并在该主层的presentationLayer上调用hitTest方法。如果单击,则返回移动层的presentationLayer,否则返回背景层


老实说,除非出于性能方面的考虑,否则我不会使用OpenGL,因为与核心动画为您提供的UIView和CALayers相比,编写OpenGL代码要困难得多。我已经能够使用UIView和CALayers以60帧/秒(100帧/秒30帧/秒)的速度制作50个移动半透明层的动画。

好的,使用begin/commit动画解决了我的帧速率问题,并且我能够确定UIView的实时坐标。最后一个问题是:我可以通过编程停止这样的动画吗?

好的,使用begin/commit动画解决了我的帧速率问题,并且我能够确定UIView的实时坐标。最后一个问题是:我可以通过编程停止这样的动画吗?

谢谢你的提示。我终于在“动画时间”获得了UIView帧。谢谢你的提示。我最终在“动画时间”获得了UIView帧。这是一个新问题,不应该在这里问。我发现这一点是因为我在自己发布之前正在搜索同一个问题。这是一个新问题,不应该在这里问。我发现这一点是因为我在自己发布之前正在搜索同一个问题。看见