2013-05-20 99 views
1

我最近開始學習AndEngine,但是我遇到了麻煩,我正在學習有關基礎知識的教程,我想加載png image,但它給了我錯誤,而且項目是失敗。使用AndEngine運行簡單代碼

這裏是源代碼

public class MainActivity extends BaseGameActivity { 
    protected static final int WIDTH = 800; 
    public static final int HEIGHT = 460; 
    BitmapTextureAtlas playerTexture; 
    ITextureRegion playerTexureRegion; 
    Scene scene; 

    @Override 
    public EngineOptions onCreateEngineOptions() { 
     Camera mCamera = new Camera(0, 0, WIDTH, HEIGHT); 
     EngineOptions engine = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(WIDTH, HEIGHT), mCamera); 

     return engine; 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws Exception { 
     // TODO Auto-generated method stub 
     loadsfx(); 
     pOnCreateResourcesCallback.onCreateResourcesFinished(); 
    } 

    private void loadsfx() { 
    // TODO Auto-generated method stub 
     BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("assets/"); 

     playerTexture = new BitmapTextureAtlas(getTextureManager(),64,64); 
     playerTexureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(playerTexture, this, "fred1.png",0,0); 
     playerTexture.load(); 
    } 

    @Override 
    public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception { 
     // TODO Auto-generated method stub 
     this.scene = new Scene(); 
     this.scene.setBackground(new Background(0,125,58)); 

     pOnCreateSceneCallback.onCreateSceneFinished(this.scene); 

    } 

    @Override 
    public Engine onCreateEngine(EngineOptions pEngineOptions) { 
     // TODO Auto-generated method stub 
     return super.onCreateEngine(pEngineOptions); 
    } 

    @Override 
    public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception { 
     // TODO Auto-generated method stub 

     Sprite sPlayer = new Sprite(WIDTH/2, HEIGHT/2, playerTexureRegion, this.mEngine.getVertexBufferObjectManager()); 
     sPlayer.setRotation(45.0f); 
     this.scene.attachChild(sPlayer); 
     pOnPopulateSceneCallback.onPopulateSceneFinished(); 
    } 

這裏是什麼logcat的是說

05-20 18:11:28.110: E/AndEngine(6616): at android.content.res.AssetManager.openAsset(Native Method) 
05-20 18:11:28.110: E/AndEngine(6616): at android.content.res.AssetManager.open(AssetManager.java:315) 
05-20 18:11:28.110: E/AndEngine(6616): at android.content.res.AssetManager.open(AssetManager.java:289) 
05-20 18:11:28.110: E/AndEngine(6616): at org.andengine.opengl.texture.atlas.bitmap.source.AssetBitmapTextureAtlasSource.onLoadBitmap(AssetBitmapTextureAtlasSource.java:86) 
05-20 18:11:28.110: E/AndEngine(6616): at org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas.writeTextureToHardware(BitmapTextureAtlas.java:154) 
05-20 18:11:28.110: E/AndEngine(6616): at org.andengine.opengl.texture.Texture.loadToHardware(Texture.java:137) 
05-20 18:11:28.110: E/AndEngine(6616): at org.andengine.opengl.texture.TextureManager.updateTextures(TextureManager.java:254) 
05-20 18:11:28.110: E/AndEngine(6616): at org.andengine.engine.Engine.onDrawFrame(Engine.java:613) 
05-20 18:11:28.110: E/AndEngine(6616): at org.andengine.opengl.view.EngineRenderer.onDrawFrame(EngineRenderer.java:105) 
05-20 18:11:28.110: E/AndEngine(6616): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363) 
05-20 18:11:28.110: E/AndEngine(6616): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118) 

請幫助我,我有一個很大的願望,瞭解發動機,但它不工作。

回答

1
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath(path); 

「setAssetBasePath」從「assets」目錄設置資產路徑。 在您的代碼中,精靈圖像的完整路徑必須是「/assets/assets/fred1.png」。 如果路徑爲精靈「/assets/fred1.png」只是刪除BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("assets/");

+0

它還沒有工作,請其他一些建議:( – dganchev

+0

需要更多關於您資源的信息。什麼是圖像大小?完整路徑?Ps' this.scene.setBackground(new Background(0,125,58));'是錯誤的,顏色值應該在0.0和1.0之間,包括 – Alexey

+0

圖像大小是3,10KB,它是64x64 png文件。 ( – dganchev