2013-06-23 45 views
0

我正在開發使用Andengine GLES2錨中心分支的動態壁紙,基於開發Cookbook.Wallpaper在中端到高端設備上工作正常,但在低端設備上顯示問題。我已經在三星galaxy ace,Micromax Funbook平板電腦和問題發生器Samsung galaxy Y上進行了測試。問題僅在Samsung galaxy Y上發現,是我擁有的唯一低端設備。Andengine動態壁紙:在低端設備上鬆動紋理

問題

有時解鎖屏幕,當我失去了所有精靈的紋理,或返回主頁某些時候,是不是在可預見的方式產生錯誤時,有時它不會引起任何問題可言,但是,即使在我的預覽模式下進行工作時,我也必須強制關閉應用程序並再次啓動應用程序。

這些都是我的動態壁紙的細節, 壁紙有一個背景精靈,主圖像精靈,二BatchedSpriteParticleSystem一些初始化和改性劑 我有資產一sepretae文件夾中低端設備(320 * 480),其中在這種情況下,我保留小圖像並將所有圖像加載到單個紋理圖集,其他方式我使用兩個紋理圖集一個用於背景圖像,另一個用於我的主圖像和兩個粒子圖像。我使用資源管理器calss andengine食譜加載紋理

請幫我解決這個問題,我不知道哪裏我錯了這個 這裏是我的代碼...

下面

LiveWallpaperExtensionService給出個

LiveWallpaperExtensionService

@TargetApi(13) 
public class LiveWallpaperExtensionService extends BaseLiveWallpaperService { 

    public Sprite bg_Sprite; 
    public Sprite main_image_sprite; 
    public SpriteBackground background; 

    public BatchedSpriteParticleSystem beamParticleSystem; 
    public BatchedSpriteParticleSystem starParticleSystem; 

    private Camera mCamera; 
    private Scene mScene; 


    @Override 
    public org.andengine.engine.Engine onCreateEngine(
      final EngineOptions pEngineOptions) { 
     return new FixedStepEngine(pEngineOptions, 50); 
    } 

    public EngineOptions onCreateEngineOptions() { 

     Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)) 
       .getDefaultDisplay(); 
     Utils.setGlobalWidthandHeight(Utils.getDisplaySize(display)); 

     mCamera = new Camera(0, 0, Global.Width, Global.Height); 

     EngineOptions engineOptions = new EngineOptions(true, 
       ScreenOrientation.PORTRAIT_SENSOR, new FillResolutionPolicy(), 
       mCamera); 

     engineOptions.getRenderOptions().setDithering(true); 
     return engineOptions; 
    } 


    public void onCreateResources(
      OnCreateResourcesCallback pOnCreateResourcesCallback) { 

     System.out.println("On create resourses"); 
     ResourceManager.getInstance().loadBlueTextures(mEngine, this); 
     pOnCreateResourcesCallback.onCreateResourcesFinished(); 

    } 

    public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) { 
     System.out.println("On create scene"); 
     mScene = new Scene(); 
     pOnCreateSceneCallback.onCreateSceneFinished(mScene); 
    } 

    public void onPopulateScene(Scene arg0, 
      OnPopulateSceneCallback pOnPopulateSceneCallback) { 

     System.out.println("on populate "); 

     final float positionX = Global.Width * 0.5f; 
     final float positionY = Global.Height * 0.5f; 


     bg_Sprite = new Sprite(positionX, positionY, 
       ResourceManager.getInstance().mBackgroundTextureRegion, 
       this.getVertexBufferObjectManager()); 

     main_image_sprite = new Sprite(positionX, positionY, 
       ResourceManager.getInstance().mJesusTextureRegion, 
       this.getVertexBufferObjectManager()); 

     /* 
     * Define the center point of the particle system spawn location 
     */ 
     final int bparticleSpawnCenterX = (int) (Global.Width * 0.5f); 
     final int bparticleSpawnCenterY = (int) ((Global.Height * 0.5f) + ((Global.Height * 0.5f)) * 0.5f) - 25; 
     /* Define the radius of the circle for the particle emitter */ 
     final float particleEmitterRadius = 50; 
     /* Create the particle emitter */ 
     CircleOutlineParticleEmitter bparticleEmitter = new CircleOutlineParticleEmitter(
       bparticleSpawnCenterX, bparticleSpawnCenterY, 
       particleEmitterRadius); 

     beamParticleSystem = new BatchedSpriteParticleSystem(bparticleEmitter, 
       10, 15, 50, ResourceManager.getInstance().mBeamTextureRegion, 
       mEngine.getVertexBufferObjectManager()); 

     beamParticleSystem 
       .addParticleInitializer(new ExpireParticleInitializer<UncoloredSprite>(
         3)); 

     beamParticleSystem 
       .addParticleInitializer(new AccelerationParticleInitializer<UncoloredSprite>(
         -150, 150, -150, 150)); 

     RectangleParticleEmitter particleEmitter = new RectangleParticleEmitter(
       ((int) (Global.Width * 0.5f)), ((int) (Global.Height * 0.5f)), 
       Global.Width, Global.Height); 

     // Create a batched particle system for efficiency 
     starParticleSystem = new BatchedSpriteParticleSystem(particleEmitter, 
       1, 2, 20, ResourceManager.getInstance().mStarTextureRegion, 
       mEngine.getVertexBufferObjectManager()); 

     /* Add an acceleration initializer to the particle system */ 

     starParticleSystem 
       .addParticleInitializer(new ExpireParticleInitializer<UncoloredSprite>(
         10)); 

     starParticleSystem 
       .addParticleInitializer(new RotationParticleInitializer<UncoloredSprite>(
         0, 160)); 

     /* Define min/max values for the particle's scale */ 

     starParticleSystem 
       .addParticleInitializer(new ScaleParticleInitializer<UncoloredSprite>(
         0.3f, 1.5f)); 

     /* Define the alpha modifier's properties */ 

     starParticleSystem 
       .addParticleModifier(new AlphaParticleModifier<UncoloredSprite>(
         0, 2, 0, 1)); 

     /* Define the rotation modifier's properties */ 

     starParticleSystem 
       .addParticleModifier(new RotationParticleModifier<UncoloredSprite>(
         1, 9, 0, 180)); 

     // Add alpha ('fade out') modifier 
     starParticleSystem 
       .addParticleModifier(new AlphaParticleModifier<UncoloredSprite>(
         8, 10, 1, 0)); 




     /* 
     * Create the SpriteBackground object, specifying the color values & 
     * Sprite object to display 
     */ 

     final float red = 0.7f; 
     final float green = 0.78f; 
     final float blue = 0.85f; 
     final float alpha = 1; 

     background = new SpriteBackground(red, green, blue, bg_Sprite); 
     mScene.setBackground(background); 
     mScene.setBackgroundEnabled(true); 

     // Attach our particle system to the scene 
     mScene.attachChild(starParticleSystem); 
     mScene.attachChild(beamParticleSystem); 

     mScene.attachChild(main_image_sprite); 

     bg_Sprite.setIgnoreUpdate(true); 
     main_image_sprite.setIgnoreUpdate(true); 

     pOnPopulateSceneCallback.onPopulateSceneFinished(); 
    } 

    @Override 
    protected synchronized void onPause() { 
     System.out.println("On paused"); 
     super.onPause(); 

     if (starParticleSystem != null) { 
      starParticleSystem.setParticlesSpawnEnabled(false); 
     } 
     if (beamParticleSystem != null) { 
      beamParticleSystem.setParticlesSpawnEnabled(false); 
     } 

    } 

    @Override 
    protected synchronized void onResume() { 

     System.out.println("On resume"); 
     super.onResume(); 

     if (starParticleSystem != null) { 
      starParticleSystem.setParticlesSpawnEnabled(true); 
     } 
     if (beamParticleSystem != null) { 
      beamParticleSystem.setParticlesSpawnEnabled(true); 
     } 

    } 


    } 



} 

請幫我理清這個問題,我歡迎所有的想法建議,任何事情你的任何想法來解決這個問題....

回答

2

我注意到Galaxy Y有很多問題,一直在爲我的遊戲收到很多崩潰報告,直到我阻止他們下載並停止所有報告[這是唯一有問題的設備]

我建議你做同樣的

編輯: 如果你想選擇支持哪些設備,你可以用這個例子

<supports-screens 
android:largeScreens="true" 
android:normalScreens="true" 
android:smallScreens="false" 
android:anyDensity="true" /> 

修改,您看合適

+0

謝謝先生,我也想過了,主席先生,我想知道什麼是阻止所有低端設備的最佳方式,同時支持具有小屏幕尺寸(320 * 480)設備的中端和高端設備。或者是否有任何可用的低端設備列表,因此我們可以直接阻止它們在商店 –

+0

嘗試定義您的支持屏幕,我編輯了我的答案,包括 – Jimmar

+0

謝謝,詳情.. –