我正在用andengine创建动态壁纸。我的项目有两个类设置更改后更新动态壁纸
public class LiveWallpaperMain extends BaseLiveWallpaperService implements SharedPreferences.OnSharedPreferenceChangeListener
{
//Other methods
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)
throws Exception {
// TODO Auto-generated method stub
this.mEngine.registerUpdateHandler(new FPSLogger());
scene = new Scene();
if(snowDensity == 5)
snowDensityValue = 50;
else if(snowDensity == 10)
snowDensityValue = 200;
else
snowDensityValue = 500;
particleSystem = new BatchedPseudoSpriteParticleSystem(
new RectangleParticleEmitter(CAMERA_WIDTH/2, 0, CAMERA_WIDTH, CAMERA_HEIGHT),
2, 5, snowDensityValue, mSnowParticleRegion, vbom);
particleSystem.setBlendFunction(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE);
particleSystem.addParticleInitializer(new VelocityParticleInitializer<Entity>(-3, 3, 20, 40));
particleSystem.addParticleInitializer(new AccelerationParticleInitializer<Entity>(-3, 3, 3, 5));
particleSystem.addParticleInitializer(new RotationParticleInitializer<Entity>(0.0f, 360.0f));
particleSystem.addParticleInitializer(new org.andengine.entity.particle.modifier.ExpireParticleInitializer<Entity>(15f));
particleSystem.addParticleInitializer(new ScaleParticleInitializer<Entity>(0.5f, 0.9f));
particleSystem.addParticleInitializer(new RegisterXSwingEntityModifierInitializer<Entity>(15f, 0f, (float) Math.PI * 8, 3f, 25f, true));
particleSystem.addParticleModifier(new AlphaParticleModifier<Entity>(10f, 15f, 1.0f, 0.0f));
Log.e("LiveWallpaperSettings", "Density " + snowDensityValue);
pOnCreateSceneCallback.onCreateSceneFinished(scene);
}
}
这是设置类
public class LiveWallpaperSettings extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener
{
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
SharedPreferences customSharedPreference = getSharedPreferences(key, MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference.edit();
editor.putString("Speed",listPreference.getValue());
editor.commit();
Log.e("LiveWallpaperSettings", "currvalue " + listPreference.getValue());
currValue = listPreference.getValue();
}
}
我想,当它在设置被改变以改变雪密度。当我更改设置时,它会在共享首选项中发生变化,但是如何将粒子系统刷新到变化会立即反映出来?
为粒子效果制作方法,并在来自该屏幕时立即调用此方法。 – Rama
代码示例会更有帮助。 –