java - Andengine BlackBoxes Sprite 未正确加载

标签 java android andengine sprite

大家好,我是 Android 开发的新手,我遇到了一些问题,我的 sprite 无法正确加载。在我开始添加 AnalogOnScreenControl 之前我的代码非常好,现在我所有的 Sprite 包括我的 AnalogOnScreenControl 只显示一个黑框。控件上的小块也是黑色的。唯一不是黑色的东西是黑色背景和地面本身。这是我的代码:

public class MainActivity extends BaseGameActivity {

Scene scene;
protected static final int CAMERA_WIDTH = 256;
protected static final int CAMERA_HEIGHT = 144;
BitmapTextureAtlas playerTexture;
ITextureRegion playerTextureRegion;
PhysicsWorld physicsWorld;
private Camera mCamera;

private TextureRegion controlTextureRegion;
private TextureRegion controlNubTextureRegion;

@Override
public EngineOptions onCreateEngineOptions() {
    // TODO Auto-generated method stub
    mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); // Camera
                                                                    // Defines
                                                                    // How
                                                                    // we
                                                                    // see
                                                                    // the
                                                                    // screen
    EngineOptions options = new EngineOptions(true,
            ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(
                    CAMERA_WIDTH, CAMERA_HEIGHT), mCamera); // set screen
                                                            // orientation
                                                            // and camera to
                                                            // engine
                                                            // options
    return options; // return those options
}

@Override
public void onCreateResources(
        OnCreateResourcesCallback pOnCreateResourcesCallback)
        throws Exception {
    // TODO Auto-generated method stub
    loadGfx(); // load graphics
    pOnCreateResourcesCallback.onCreateResourcesFinished(); // add callback
}

private void loadGfx() {
    // TODO Auto-generated method stub
    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
    playerTexture = new BitmapTextureAtlas(getTextureManager(), 88, 23);
    playerTextureRegion = BitmapTextureAtlasTextureRegionFactory
            .createFromAsset(playerTexture, getBaseContext(),
                    "mrsaispritesheet.png", 0, 0);

    this.controlTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(new BuildableBitmapTextureAtlas(getTextureManager(), 32, 32), this.getAssets(), "basecontrol.png", false);
    this.controlNubTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(new BuildableBitmapTextureAtlas(getTextureManager(), 32, 32), this.getAssets(), "controlnub.png", false); 


}

@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)
        throws Exception {
    // TODO Auto-generated method stub


    final AnalogOnScreenControl control = new AnalogOnScreenControl(0,
            CAMERA_HEIGHT - this.controlTextureRegion.getHeight(),
            this.mCamera, this.controlTextureRegion,
            this.controlNubTextureRegion, 200,
            getVertexBufferObjectManager(),
            new IAnalogOnScreenControlListener() {

                @Override
                public void onControlChange(
                        BaseOnScreenControl pBaseOnScreenControl,
                        float pValueX, float pValueY) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onControlClick(
                        AnalogOnScreenControl pAnalogOnScreenControl) {
                    // TODO Auto-generated method stub

                }

    });




    this.scene = new Scene();
    this.scene.setBackground(new Background(0, 125, 58));

    physicsWorld = new PhysicsWorld(new Vector2(0,
            SensorManager.GRAVITY_MOON), false);
    this.scene.registerUpdateHandler(physicsWorld);
    createWalls();
    this.scene.setChildScene(control);
    pOnCreateSceneCallback.onCreateSceneFinished(this.scene);

}

private void createWalls() {
    // TODO Auto-generated method stub
    FixtureDef WALL_FIX = PhysicsFactory.createFixtureDef(0.0f, 0.0f, 0.0f);
    Rectangle ground = new Rectangle(0, CAMERA_HEIGHT - 15, CAMERA_WIDTH,
            15, this.mEngine.getVertexBufferObjectManager());
    ground.setColor(new Color(15, 50, 0));
    PhysicsFactory.createBoxBody(physicsWorld, ground, BodyType.StaticBody,
            WALL_FIX);
    this.scene.attachChild(ground);
}

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

    Sprite sPlayer = new Sprite(CAMERA_WIDTH / 2, CAMERA_HEIGHT / 2,
            playerTextureRegion,
            this.mEngine.getVertexBufferObjectManager());

    final FixtureDef PLAYER_FIX = PhysicsFactory.createFixtureDef(10.0f,
            0.0f, 0.0f);

    Body body = PhysicsFactory.createBoxBody(physicsWorld, sPlayer,
            BodyType.DynamicBody, PLAYER_FIX);
    this.scene.attachChild(sPlayer);
    physicsWorld.registerPhysicsConnector(new PhysicsConnector(sPlayer,
            body, true, false));

    pOnPopulateSceneCallback.onPopulateSceneFinished();
}

}

知道我做错了什么吗?感谢帮助:]

最佳答案

您需要在创建纹理后调用加载函数来加载您的纹理。像这样:

playerTexture.load();

这一行必须在创建它们之后

关于java - Andengine BlackBoxes Sprite 未正确加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18247006/

相关文章:

java - 创建自定义绑定(bind)属性

java - 将各种 editText 传递给另一个 Activity

java - 如何在Java中基于节点枚举对象?

android - 如何处理 imageView.setImageURI(Uri.parse(local_path)); 的 try-catch 子句

android - AndEngine:动画 Sprite 不适用于物理处理程序

java - Android 警报立即触发

android - 如何根据结果检查和加载 Activity

java - 单击 RecyclerView 项目时更新 ListView

android - 纹理的最大尺寸是多少(Andengine)

android - 在 AndEngine 中设置带有一些效果的场景