本文为原创文章,欢迎转载,但请注明出处http://www.cnblogs.com/yexiubiao/archive/2013/06/16/3138788.html,未在文章页面明显位置给出原文连接的,将保留追究法律责任的权利。
最近维护一个AndEngine老版本开发的项目(就是包名以org.anddev 开头的那个版本),需要将这个项目升级成GLES2版本(包名以org.andengine开头)。升级后发现,粒子的颜色和大小都发生了很大变化。我的第一反应可能是,作者可能对粒子系统做了很大的修改,接接下来我得各个参数都重新调整了,这么多参数,又没有可用的粒子编辑器,这不得调死人啊,想想都不愿意去做。
这时突然想到,先去对比Andengine作者写的示例代码吧,看看两个版本的粒子系统的demo参数有什么不同,看看他的参数修改是怎样的。结果偶然发现原来作者只是简单的做了参数位置调整,即作者将所有Modifier的(float pFromTime, float pToTime)两个参数由最后调整到了参数的最前面,据作者说这也是为了跟其他地方的参数保持统一。见下图:
老版本的参数位置是在最后面:
新版本的参数位置是在最前面:
再看看老版本和新版本的参数位置(上面是老版本,下面是新版本):
看了上图后,可以很肯定,就只是个简单的参数位置的变化而已,所以只需简单的把所有Modifier的后面两个参数复制到最前面即可。当然,所有Initializer 的参数都不需要修改,
因为他们没有(float pFromTime, float pToTime)参数。
另外,ExpireModifier 已改为ExpireParticleInitializer ,
还有particleSystem.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE)已改为particleSystem.addParticleInitializer(new BlendFunctionParticleInitializer<Sprite>(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE));
修改时参照作者新版本的demo即可。