我的应用程序的一部分显示了一个风景,但它现在有点无聊。因此,我打算在屏幕上制作一些粒子的动画(想想像小翅膀的东西 - http://www.youtube.com/watch?v=DpmcX-rWGfs)。但是,我还没有找到任何内置的粒子系统;我怎样才能有效记忆?我已经使用CADisplayLink实现了我自己的动画系统,可以让一些云在景观上动画,而且它有点迟钝(尽管我希望很快就能让它更快)。另一个非常重的系统,比如我想一次动画20个小点,可能会破坏它。
答案 0 :(得分:5)
我还没有找到任何内置的粒子系统;
有几个“免费”项目嵌入了粒子系统,你可以访问这个video tutorial来获得一个粒子系统,它对你提到的需求来说足够有效。制作粒子系统的方式基本上与Cocos2d使用的方式相同,因此观看教程,然后下载项目文件,您可以轻松地将粒子发射器嵌入到项目中。
我怎样才能有效记忆?
我建议你使用“Object Pool Pattern”,基本上你预先分配一个粒子的“池”,比方说1000个对象。然后是你的发射器,在需要它们时向池中询问粒子。如果池空了,您可以相应地管理案例。从内存的角度来看,这看起来效率可能不高,但它的性能非常高效(以避免实时分配许多小对象,如粒子)。
一些建议,当你声明你的粒子结构尝试轻量级并且与2的幂对齐时(这将使你的结构更加缓存友好),这个是32字节:
struct Particle
{
CGPoint position;
CGPoint speed;
float life;
float decay;
unsigned short index;
unsigned char color_R;
unsigned char color_G;
unsigned char color_B;
unsigned char color_A;
unsigned char rotation;
};
但是根据你的需要,这可能要小得多,也许你真的不需要颜色/索引等。你必须自己评估一下。
最后我建议你看看cocos2d CCParticleSystem
类,你可以下载代码here。它们的实现并不轻巧,但它非常灵活,可以实现非常好的效果。
祝你的颗粒好运:)
答案 1 :(得分:4)
你应该查看Matt Drance撰写的新书“iOS食谱”:
http://pragprog.com/titles/cdirec/ios-recipes
其中一个配方是利用内置的CoreAnimation CAReplicatorLayer在“构建一个简单的发射器”中构建一个发射器。
这本书仍处于阿尔法,但如果您现在购买,则会在完成后获得更新。
答案 2 :(得分:4)
Cocos2D是一个使用OpenGL ES 1进行渲染的2D图形引擎。它配有内置粒子系统。粒子引擎的代码非常简单。它使用VBO为粒子绘制纹理四边形。你应该能够根据自己的需要进行调整。
答案 3 :(得分:0)
如果您想要定位iOS5及更高版本,您可以使用操作系统的内置工具,即CAEmitterLayer。