1

こんにちは、アンドロイド向けの開発は初めてで、スプライトが正しくロードされないという問題が発生しています。私のコードは、AnalogOnScreenControl の追加を開始する前はまったく問題ありませんでしたが、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();
}

}

何が間違っているのですか?ヘルプは高く評価されています:]

4

1 に答える 1

1

テクスチャを作成した後、load 関数を呼び出してテクスチャをロードする必要があります。このような:

playerTexture.load();

この行は、それらを作成した直後でなければなりません

于 2013-08-15T05:55:12.260 に答える