0

[更新] 我稍微改变了顺序,所以我super.act(delta)在方法的最后调用了,这似乎有点帮助!但还不确定。

我的地图有一个正方形系统。所以它是一个 2D 数组,并且 ii 移动一次,图形确实从一个正方形移动到下一个正方形。虽然不可能在 2 个方格之间“停止”这个数字。

当我的角色移动时,我检查是否触摸了触摸板,如果是,我开始下一步。虽然它有时似乎滞后,我不知道为什么!?我真的希望你能找到“滞后”。act()以下是我如何计算Actor角色内部的下一步行动:

@Override
public void act(float delta) {
    super.act(delta); // so the actions work
    if (moveDone) {
        if (screen.gameHud.pad.isTouched()) {
            // check in which direction is the touchcontroller
            if (screen.gameHud.pad.getKnobPercentX() < 0
                    && Math.abs(screen.gameHud.pad.getKnobPercentY()) < Math
                            .abs(screen.gameHud.pad.getKnobPercentX())) {
                // checkt if the |x|>|y|
                if (checkNextMove(Status.LEFT)) {
                    this.status = Status.LEFT;
                    move(Status.LEFT);
                    this.screen.map.mapArray[(int) (this.mapPos.x)][(int) this.mapPos.y] = Config.EMPTYPOSITION;
                    this.screen.map.mapArray[(int) (this.mapPos.x - 1)][(int) this.mapPos.y] = Config.CHARSTATE;
                    this.mapPos.x--;
                    moveDone = false;
                }
            } else if //.... rest is the same just with other directions
else{ //if touchpad isnt touched!
    setIdle();
}
updateSprite(delta); //just change the textureRegion if its time for that
} //methode end

好的,我相信您需要更多信息。像这样的检查动作:

case LEFT:
        if (this.mapPos.x - 1 >= 0)
            if (this.screen.map.mapArray[(int) (this.mapPos.x - 1)][(int) this.mapPos.y] == Config.EMPTYPOSITION)
                return true;
        break; //same for all other just direction changin

最后你需要知道的是move(_)我猜。它确实为我的人物添加了一个 moveTo Action。

public void move(Status direction) {
    switch (direction) {
    case LEFT:
        this.addAction(Actions.sequence(
                Actions.moveTo((getX() - Config.BLOCK_SIZE), getY(), speed),
                moveDoneAction));
        break;

moveDoneAction 很简单,如果完成移动,则将其RunnableAction设置为 true。 我真的希望你能帮忙。如果您需要更多信息,请在评论中告诉我!boolean moveDone

4

1 回答 1

1

有比 StackOverflow 更好的工具来优化 Android 代码。使用分析器,看看实际发生了什么。具体来说,traceview profiler: how to use traceview in eclipse for android development? (如果您不使用 Eclipse,您可以通过 ADT 直接使用 traceview。)

于 2013-04-25T15:31:34.873 回答