Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么播放机没有在AndEngine中显示TMX文件?_Java_Andengine_Tmx - Fatal编程技术网

Java 为什么播放机没有在AndEngine中显示TMX文件?

Java 为什么播放机没有在AndEngine中显示TMX文件?,java,andengine,tmx,Java,Andengine,Tmx,我正在用AnEngine GLES2 AnchorCenter开发一个2d platformer游戏…我有6个关卡,任何关卡都有一个Tmx文件(平铺)…我可以加载Tmx文件,但玩家不显示在屏幕上…我想玩家在第一个平台上,然后跳到另一个平台上,但我不知道怎么做 这是我的密码。。。 请帮帮我。 谢谢 TMX文件: <?xml version="1.0" encoding="UTF-8"?> <map version="1.0" orientation="orthogonal" re

我正在用AnEngine GLES2 AnchorCenter开发一个2d platformer游戏…我有6个关卡,任何关卡都有一个Tmx文件(平铺)…我可以加载Tmx文件,但玩家不显示在屏幕上…我想玩家在第一个平台上,然后跳到另一个平台上,但我不知道怎么做

这是我的密码。。。 请帮帮我。 谢谢

TMX文件:

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="500" height="50" tilewidth="20" tileheight="20" nextobjectid="16">
<tileset firstgid="1" name="map_tiles" tilewidth="20" tileheight="20" tilecount="48">
<image source="gfx/game/map_tiles.png" width="128" height="160"/>
</tileset>
<layer name="Tile Layer 1" width="500" height="50">
<data encoding="base64" compression="gzip">
   H4sIAAAAAAAAC+3YOxLCMAxAQU8qE44AZwDuf7qoYUhpM/nIky22tjrpeSqlTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEm8wjt8EswCAAAAnMcfAQAAAPzoZACglbsBAAAA+mhpAODLXQAAAADbaelsLQ4AZFbDLczhnmAeANjKaD1uJwMAAMA+NDcAjMHOBgAycJMAcCVH7r26sn6zNrCbAQAAGJ2+BQAAgP3pbwAAADiGBgcAAAAAgH7+1wEAAAAA4D+P8EwwBwAAAFyJHgcAAAAAgH7+1wEAAOA8C3BZGU2ghgEA
</data>
</layer>
<objectgroup name="Object Layer 1" width="500" height="50">
<properties>
<property name="sp" value="true"/>
</properties>
<object id="1" x="19" y="280" width="61" height="20"/>
<object id="2" x="80" y="361" width="60" height="20"/>
<object id="13" x="419" y="760"/>
</objectgroup>
<objectgroup name="Object Layer 2" width="500" height="50">
<properties>
<property name="su" value="true"/>
</properties>
<object id="6" x="441" y="479" width="59" height="21"/>
<object id="7" x="541" y="439" width="59" height="21"/>
</objectgroup>
</map>

如果你没有加载TMX层,你的播放器还会显示吗?如果是这样,请尝试将播放器上的z索引设置为喜欢3,例如
player.setZIndex(3)
@sij_a如果我没有加载TMX层,则会显示播放器…我使用setZIndex(),但没有显示。当我没有在player类(createPhysics)中创建物理时,会显示播放器。有什么问题吗?在
physicconnector
onUpdate
方法中,您有一个if语句,它将
getY()
作为条件。它的Y值是多少?你能删除那个if语句并看看它是否有效吗?
public abstract class Player extends AnimatedSprite {

// ---------------------------------------------
// VARIABLES
// ---------------------------------------------

public Body body;

public boolean canRun = false;

private int footContacts = 0;

// ---------------------------------------------
// CONSTRUCTOR
// ---------------------------------------------

public Player(float pX, float pY, VertexBufferObjectManager vbo,
        Camera camera, PhysicsWorld physicsWorld) {
    super(pX, pY, ResourceManager.getInstance().player_region, vbo);
    createPhysics(camera, physicsWorld);
    camera.setChaseEntity(this);
}

// ---------------------------------------------
// CLASS LOGIC
// ---------------------------------------------

private void createPhysics(final Camera camera, PhysicsWorld physicsWorld) {
    body = PhysicsFactory.createBoxBody(physicsWorld, this,
            BodyType.DynamicBody, PhysicsFactory.createFixtureDef(0, 0, 0));

    body.setUserData("player");
    body.setFixedRotation(true);

    physicsWorld.registerPhysicsConnector(new PhysicsConnector(this, body,
            true, false) {
        @Override
        public void onUpdate(float pSecondsElapsed) {
            super.onUpdate(pSecondsElapsed);
            camera.onUpdate(0.1f);

            if (getY() <= 0) {
                onDie();
            }

            if (canRun) {
                body.setLinearVelocity(new Vector2(5, body
                        .getLinearVelocity().y));
            }
        }
    });
}

public void setRunning() {
    canRun = true;

    final long[] PLAYER_ANIMATE = new long[] { 100, 100, 100 };

    animate(PLAYER_ANIMATE, 0, 2, true);
}

public void jump() {
    if (footContacts < 1) {
        return;
    }
    body.setLinearVelocity(new Vector2(body.getLinearVelocity().x, 11));
}

public void increaseFootContacts() {
    footContacts++;
}

public void decreaseFootContacts() {
    footContacts--;
}

public abstract void onDie();

}
    public void loadLevel(int levelID) {

    try {
        mTmxLoader = new TMXLoader(activity.getAssets(),
                engine.getTextureManager(), TextureOptions.NEAREST, vbom);
        mTMXTiledMap = mTmxLoader.loadFromAsset("tmx/level" + levelID
                + ".tmx");
    } catch (final TMXLoadException tmxle) {
        Debug.e(tmxle);
    }
    createObjects(mTMXTiledMap);
    final TMXLayer tmxLayer = this.mTMXTiledMap.getTMXLayers().get(0);
    mTMXTiledMap.detachChild(tmxLayer);
    this.attachChild(tmxLayer);

    /* Make the camera not exceed the bounds of the TMXEntity. */
    resourceManager.camera.setBounds(0, 0, tmxLayer.getHeight(),
            tmxLayer.getWidth());
    resourceManager.camera.setBoundsEnabled(true);

    /*
     * Calculate the coordinates for the face, so its centered on the
     * camera.
     */
    final float centerX = (resourceManager.CAMERA_WIDTH - resourceManager.player_region
            .getWidth()) / 2;
    final float centerY = (resourceManager.CAMERA_HEIGHT - resourceManager.player_region
            .getHeight()) / 2;

    /* Create the sprite and add it to the scene. */
    player = new Player(centerX, centerY, vbom, camera, physicsWorld) {

        @Override
        public void onDie() {
            // TODO Auto-generated method stub
            // if (!gameOverDisplayed
            // && playerDie == false) {
            //
            // displayGameOverText();
            // }
        }
    };

    this.attachChild(player);

}

    public void createObjects(TMXTiledMap map) {

    final FixtureDef boxFixtureDef = PhysicsFactory.createFixtureDef(0,
            0.01f, 0.5f);

    // Loop through the object groups
    for (final TMXObjectGroup group : map.getTMXObjectGroups()) {
        if (group.getTMXObjectGroupProperties().containsTMXProperty(
                "sp", "true")) {
            // This is our "wall" layer. Create the boxes from it
            for (final TMXObject object : group.getTMXObjects()) {
                final Rectangle rect = new Rectangle(object.getX(),
                        object.getY(), object.getWidth(),
                        object.getHeight(), vbom);

                final Body body = PhysicsFactory.createBoxBody(
                        physicsWorld, rect, BodyType.StaticBody,
                        boxFixtureDef);
                rect.setVisible(true);
                this.attachChild(rect);
                body.setUserData("sp");
            }
        } else if (group.getTMXObjectGroupProperties().containsTMXProperty(
                "su", "true")) {
            // This is our "wall" layer. Create the boxes from it
            for (final TMXObject object : group.getTMXObjects()) {
                final Rectangle rect = new Rectangle(object.getX(),
                        object.getY(), object.getWidth(),
                        object.getHeight(), vbom);

                final Body body = PhysicsFactory.createBoxBody(
                        physicsWorld, rect, BodyType.StaticBody,
                        boxFixtureDef);
                rect.setVisible(true);
                this.attachChild(rect);
                body.setUserData("su");
            }
        } else if (group.getTMXObjectGroupProperties().containsTMXProperty(
                "fa", "true")) {
            // This is our "wall" layer. Create the boxes from it
            for (final TMXObject object : group.getTMXObjects()) {
                final Rectangle rect = new Rectangle(object.getX(),
                        object.getY(), object.getWidth(),
                        object.getHeight(), vbom);

                final Body body = PhysicsFactory.createBoxBody(
                        physicsWorld, rect, BodyType.StaticBody,
                        boxFixtureDef);
                rect.setVisible(true);
                this.attachChild(rect);
                body.setUserData("fa");
            }
        } else if (group.getTMXObjectGroupProperties().containsTMXProperty(
                "win", "true")) {
            // This is our "wall" layer. Create the boxes from it
            for (final TMXObject object : group.getTMXObjects()) {
                final Rectangle rect = new Rectangle(object.getX(),
                        object.getY(), object.getWidth(),
                        object.getHeight(), vbom);

                final Body body = PhysicsFactory.createBoxBody(
                        physicsWorld, rect, BodyType.StaticBody,
                        boxFixtureDef);
                rect.setVisible(true);
                this.attachChild(rect);
                body.setUserData("win");
            }
        }

    }

}

    private ContactListener contactListener() {
    ContactListener contactListener = new ContactListener() {
        public void beginContact(Contact contact) {
            final Fixture x1 = contact.getFixtureA();
            final Fixture x2 = contact.getFixtureB();

            if (x1.getBody().getUserData() != null
                    && x2.getBody().getUserData() != null) {
                if (x2.getBody().getUserData().equals("player")) {
                    player.increaseFootContacts();
                }

                if (x1.getBody().getUserData().equals("su")
                        && x2.getBody().getUserData().equals("player")) {
                    engine.registerUpdateHandler(new TimerHandler(0.4f,
                            new ITimerCallback() {
                                public void onTimePassed(
                                        final TimerHandler pTimerHandler) {
                                    pTimerHandler.reset();
                                    engine.unregisterUpdateHandler(pTimerHandler);
                                    x1.getBody().setType(
                                            BodyType.DynamicBody);
                                }
                            }));
                }
                if (x1.getBody().getUserData().equals("fa")
                        && x2.getBody().getUserData().equals("player")) {
                    engine.registerUpdateHandler(new TimerHandler(0.2f,
                            new ITimerCallback() {
                                public void onTimePassed(
                                        final TimerHandler pTimerHandler) {
                                    pTimerHandler.reset();
                                    engine.unregisterUpdateHandler(pTimerHandler);
                                    x1.getBody().setType(
                                            BodyType.DynamicBody);
                                }
                            }));
                }

                if (x1.getBody().getUserData().equals("wi")
                        && x2.getBody().getUserData().equals("player")) {

                    engine.registerUpdateHandler(new TimerHandler(0.1f,
                            new ITimerCallback() {
                                public void onTimePassed(
                                        final TimerHandler pTimerHandler) {
                                    pTimerHandler.reset();
                                    engine.unregisterUpdateHandler(pTimerHandler);
                                    x1.getBody().setType(
                                            BodyType.DynamicBody);
                                }
                            }));
                }
                if (x1.getBody().getUserData().equals("levelDeadEnd")
                        && x2.getBody().getUserData().equals("player")) {
                    x2.getBody().setType(BodyType.StaticBody);
                }
            }
        }

        public void endContact(Contact contact) {
            final Fixture x1 = contact.getFixtureA();
            final Fixture x2 = contact.getFixtureB();

            if (x1.getBody().getUserData() != null
                    && x2.getBody().getUserData() != null) {
                if (x2.getBody().getUserData().equals("player")) {
                    player.decreaseFootContacts();
                }
            }
        }

        public void preSolve(Contact contact, Manifold oldManifold) {

        }

        public void postSolve(Contact contact, ContactImpulse impulse) {

        }
    };
    return contactListener;
}