只能算是簡單的研究了一下,使用了例子裏面的圖片,當點擊屏幕時粒子效果消失。
public class MainActivity extends SimpleBaseGameActivity {
private static final int CAMERA_WIDTH = 480;
private static final int CAMERA_HEIGHT = 720;
private BitmapTextureAtlas mBitmapTextureAtlas;
private ITextureRegion mParticleTextureRegion;
public EngineOptions onCreateEngineOptions() {
final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);
}
@Override
protected void onCreateResources() {
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
mBitmapTextureAtlas = new BitmapTextureAtlas(getTextureManager(), 32, 32, TextureOptions.BILINEAR);
mParticleTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mBitmapTextureAtlas, this, "particle_point.png", 0, 0);
mBitmapTextureAtlas.load();
}
@Override
protected Scene onCreateScene() {
final Scene scene = new Scene();
scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));
CircleParticleEmitter emitter = new CircleParticleEmitter(CAMERA_WIDTH / 2, CAMERA_WIDTH / 2, 30);// 圓形粒子生成器,位置在屏幕中央,半徑30
final SpriteParticleSystem particleSystem = new SpriteParticleSystem(emitter, 10, 60, 30, mParticleTextureRegion, getVertexBufferObjectManager());// 使用圖片作爲粒子
particleSystem.addParticleInitializer(new ColorParticleInitializer<Sprite>(1, 0, 0));// 初始化爲紅色
particleSystem.addParticleInitializer(new AlphaParticleInitializer<Sprite>(0));// 初始化爲全透明
particleSystem.addParticleInitializer(new BlendFunctionParticleInitializer<Sprite>(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE));
particleSystem.addParticleInitializer(new VelocityParticleInitializer<Sprite>(-5, 5, 20, 10));// 前兩個值爲橫向加速度的取值範圍,後面兩個值爲縱向加速度取值範圍
particleSystem.addParticleInitializer(new RotationParticleInitializer<Sprite>(0.0f, 360.0f));// 旋轉角度取值範圍
particleSystem.addParticleInitializer(new ExpireParticleInitializer<Sprite>(6));// 單個粒子持續時間
particleSystem.addParticleModifier(new ScaleParticleModifier<Sprite>(0, 5, 1.0f, 2.0f));// 粒子產生過程0-5秒從原始大小變爲2倍大小
particleSystem.addParticleModifier(new ColorParticleModifier<Sprite>(0, 3, 1, 1, 0, 0.5f, 0, 0));// 0-3秒間的顏色變化
particleSystem.addParticleModifier(new ColorParticleModifier<Sprite>(4, 6, 1, 1, 0.5f, 1, 0, 1));// 4-6秒間的顏色變化
particleSystem.addParticleModifier(new AlphaParticleModifier<Sprite>(0, 1, 0, 1));// 0-1秒間透明度變化
particleSystem.addParticleModifier(new AlphaParticleModifier<Sprite>(5, 6, 1, 0));// 5-6秒間透明度變化
scene.attachChild(particleSystem);
// 屏幕觸摸事件
scene.setOnSceneTouchListener(new IOnSceneTouchListener() {
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
if (pSceneTouchEvent.isActionUp()) {
particleSystem.setParticlesSpawnEnabled(false);
}
return false;
}
});
return scene;
}
}
如有不對之處,歡迎大家拍磚