Сбой BitmapTextureAtlasTextureRegionFactory.createFromAsset - PullRequest
0 голосов
/ 13 сентября 2011

Несколько месяцев назад я посмотрел на двигатель, и мне удалось что-то из него сделать. Теперь я скачал самую новую версию, и у меня произошел сбой для самой простой вещи. Вот мой код

package francesco.mygame;

import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.options.EngineOptions;
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.entity.scene.background.ColorBackground;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.entity.util.FPSLogger;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.anddev.andengine.opengl.texture.region.TextureRegion;
import org.anddev.andengine.ui.activity.BaseGameActivity;



public class mainMenu extends BaseGameActivity 
{

// ===========================================================

// Constants

// ===========================================================
static final int CAMERA_WIDTH = 480;

static final int CAMERA_HEIGHT = 320;



//private static final String TAG = "Main Menu";


// ===========================================================

// Fields

// ===========================================================

protected Camera mCamera;  
protected BitmapTextureAtlas mTexture;
protected TextureRegion mPlayTexture;
protected Sprite mPlaySprite;
protected Sprite mQuitSprite;
protected TextureRegion mQuitTexture;
protected Scene mMainScene;

// ===========================================================

// Constructors

// ===========================================================



// ===========================================================

// Getter & Setter

// ===========================================================



// ===========================================================

// Methods for/from SuperClass/Interfaces

// ===========================================================



@Override

public void onLoadComplete() 
{

// TODO Auto-generated method stub


}



@Override

public Engine onLoadEngine() 
{

    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);

    return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));

}



@Override

public void onLoadResources() 
{
    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");

    this.mTexture = new BitmapTextureAtlas(64, 128, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
    this.mPlayTexture = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexture, this, "play.png", 0, 0);
    this.mQuitTexture = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexture, this, "quit.png", 0, 40);

    this.mEngine.getTextureManager().loadTexture(this.mTexture);

}



@Override

public Scene onLoadScene() 
{

    this.mEngine.registerUpdateHandler(new FPSLogger());
    this.mMainScene = new Scene();
    this.mMainScene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));

    int play_x = (CAMERA_WIDTH + this.mPlayTexture.getWidth() )/2 ;
    int play_y = (CAMERA_HEIGHT + this.mPlayTexture.getHeight())/2 - this.mPlayTexture.getHeight();
    this.mPlaySprite = new Sprite( play_x, play_y, this.mPlayTexture);

    int quit_x = (CAMERA_WIDTH + this.mQuitTexture.getWidth() )/2 ;
    int quit_y = (CAMERA_HEIGHT + this.mQuitTexture.getHeight())/2 + this.mQuitTexture.getHeight();
    this.mQuitSprite = new Sprite(quit_x, quit_y, this.mQuitTexture);

    this.mMainScene.attachChild(mPlaySprite);
    this.mMainScene.attachChild(mQuitSprite);

    return this.mMainScene;

}



// ===========================================================

// Methods

// ===========================================================



// ===========================================================

// Inner and Anonymous Classes

// =========================================================== 

}

(обычно это хорошо с отступом)

Ошибка logCat

Не удалось загрузить растровое изображение в AssetBitMapTextureAtlasSource. Путь к активу: gfx / play.png

java.io.FileNoFoundException: gfx / play.png

Но я поместил 2 изображения в папку и добавил их в проект, как сделал, когда впервые попробовал andengine (и это сработало) .. Так что я не совсем понимаю, где проблема ..

Изображения размером 2 png, созданные с помощью gimp (одно размером 57x36, а другое 58x31).

Ответы [ 2 ]

6 голосов
/ 13 сентября 2011

A java.io.FileNoFoundException будет сгенерировано, если файл не был найден - поэтому нет никакой другой возможности, кроме того, что движок не смог найти изображение.

Убедитесь, что ваши изображения находятся в: assets/gfx/, а не только в папке с именем gfx/.

3 голосов
/ 17 декабря 2012

Убедитесь, что в вашем проекте есть папка активов и из опций BuildPath (опции проекта - вы можете получить доступ, щелкнув правой кнопкой мыши на проводнике проекта), на вкладке «Источник» нажмите кнопку «Добавить папку» и проверьте папку активов импортировать процесс компиляции.

Папка

gfx должна находиться в папке активов. Если такой папки нет и все ваши изображения являются папкой ресурсов, вам не нужно устанавливать BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/")

Я новичок в Android, и если я получаю ошибки, я стараюсь быстро найти правильный.

...