java - Android Studio LibGDX 中更新方法的问题

标签 java android android-studio libgdx

我正在尝试调用更新方法,以便每次经过一定时间后,它都会破坏并添加一个新障碍,就像游戏循环一样。但是,当我这样做时,出现了这一系列错误:

Error:(146, 8) Gradle: error: illegal start of expression 
Error:(146, 16) Gradle: error: illegal start of expression 
Error:(146, 32) Gradle: error: ';' expected 
Error:(149, 23) Gradle: error: ';' expected 
Error:(151, 31) Gradle: error: '.class' expected 
Error:(151, 40) Gradle: error: illegal start of expression 
Error:(151, 41) Gradle: error: ';' expected

这是导致问题的代码:

public void update(float deltaTime) {
        Texture playerTexture = game.getManager().get("player.png");
        Texture floorTexture = game.getManager().get("floor.png");
        Texture overfloorTexture = game.getManager().get("overfloor.png");
        Texture overfloor2Texture = game.getManager().get("overfloor2.png");
        Texture obstacleTexture = game.getManager().get("obstacle.png");
        Texture obstacle2Texture = game.getManager().get("obstacle2.png");

        float timer = 0;
        float spawnTime = 4f;
        private void spawnEntity();
        {
            //Increment timer by the duration since the previous frame
            float timer += Gdx.graphics.getRawDeltaTime();
            //Compare to spawntime
            if (timer >= float spawnTime)
            {
                //Spawn your object
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture, 0, 1000, 1));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,8, 10 ,5));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,10, 10 ,8));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,34 , 3 ,5));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,19 , 8 ,4));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,24 , 8 ,1.5f));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,27 , 5 , 2));
                obstacleList.add(new ObstacleEntity(world, floorTexture, overfloorTexture, overfloor2Texture ,25, 10 ,20));
                //But you will probably want to spawn something on the right, just outside of your screen view.

                //This is the right side of your vp in the world. Depending how you draw you can add some more to it.
                float spawnX = camera.position.x + camera.viewportWidth / 2;
                //Then use this to spawn your object, since you hardcoded stuff I have no idea where to put it.

                //Now reset timer
                timer-= spawnTime;

                //And perhaps randomize the spawnTime? (between 2 and 4 seconds)
                Random random;
                spawnTime = random.nextFloat() * 2 + 2;
            }
        }

这是我的 GameScreen 类的代码:

package com.circlecrashavoider;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Contact;
import com.badlogic.gdx.physics.box2d.ContactImpulse;
import com.badlogic.gdx.physics.box2d.ContactListener;
import com.badlogic.gdx.physics.box2d.Manifold;
import com.badlogic.gdx.physics.box2d.World;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.circlecrashavoider.entities.FloorEntity;
import com.circlecrashavoider.entities.ObstacleEntity;
import com.circlecrashavoider.entities.ObstacleEntity2;
import com.circlecrashavoider.entities.PlayerEntity;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Random;

/**
 * Created by Felipe on 2/22/2016.
 */

public class GameScreen extends BaseScreen {

    private Stage stage;

    private World world;

    private PlayerEntity player;

    private List<FloorEntity> floorList = new ArrayList<FloorEntity>();

    private List<ObstacleEntity> obstacleList = new ArrayList<ObstacleEntity>();

    private List<ObstacleEntity2> obstacle2List = new ArrayList<ObstacleEntity2>();

    public GameScreen(MainGame game) {
        super(game);
        stage = new Stage(new FitViewport(1024, 620));
        world = new World(new Vector2(0, -10), true);

        world.setContactListener(new ContactListener() {

            private boolean areCollided(Contact contact, Object userA, Object userB) {
                return (contact.getFixtureA().getUserData().equals(userA) && contact.getFixtureB().getUserData().equals(userB)) ||
                        (contact.getFixtureA().getUserData().equals(userB) && contact.getFixtureB().getUserData().equals(userA));
            }

            @Override
            public void beginContact(Contact contact) {
                if (areCollided(contact, "player", "floor")) {
                    player.setJumping(false);
                    if (Gdx.input.isTouched()) {
                        player.setMustJump(true);
                    }
                }

                if (areCollided(contact, "player", "obstacle")) {
                        player.setAlive(false);
                    System.out.println("GAME OVER");

                }

                if (areCollided(contact, "player", "obstacle2")) {
                    player.setAlive(false);
                    System.out.println("GAME OVER");
                }
            }

            @Override
            public void endContact(Contact contact) {

            }

            @Override
            public void preSolve(Contact contact, Manifold oldManifold) {

            }

            @Override
            public void postSolve(Contact contact, ContactImpulse impulse) {

            }
        });
    }

    @Override
    public void show() {
        Texture playerTexture = game.getManager().get("player.png");
        Texture floorTexture = game.getManager().get("floor.png");
        Texture overfloorTexture = game.getManager().get("overfloor.png");
        Texture overfloor2Texture = game.getManager().get("overfloor2.png");
        Texture obstacleTexture = game.getManager().get("obstacle.png");
        Texture obstacle2Texture = game.getManager().get("obstacle2.png");
        player = new PlayerEntity(world, playerTexture, new Vector2(1, 2));

        for (FloorEntity floor : floorList) {
            stage.addActor(floor);
        }
        for (ObstacleEntity obstacle : obstacleList) {
            stage.addActor(obstacle);
            stage.addActor(player);
        }
        for (ObstacleEntity2 obstacle2 : obstacle2List) {
            stage.addActor(obstacle2);
        }
    }

    public void update(float deltaTime) {
        Texture playerTexture = game.getManager().get("player.png");
        Texture floorTexture = game.getManager().get("floor.png");
        Texture overfloorTexture = game.getManager().get("overfloor.png");
        Texture overfloor2Texture = game.getManager().get("overfloor2.png");
        Texture obstacleTexture = game.getManager().get("obstacle.png");
        Texture obstacle2Texture = game.getManager().get("obstacle2.png");

        float timer = 0;
        float spawnTime = 4f;
        private void spawnEntity();
        {
            //Increment timer by the duration since the previous frame
            float timer += Gdx.graphics.getRawDeltaTime();
            //Compare to spawntime
            if (timer >= float spawnTime)
            {
                //Spawn your object
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture, 0, 1000, 1));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,8, 10 ,5));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,10, 10 ,8));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,34 , 3 ,5));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,19 , 8 ,4));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,24 , 8 ,1.5f));
                floorList.add(new FloorEntity(world, floorTexture, overfloorTexture,overfloor2Texture ,27 , 5 , 2));
                obstacleList.add(new ObstacleEntity(world, floorTexture, overfloorTexture, overfloor2Texture ,25, 10 ,20));
                //But you will probably want to spawn something on the right, just outside of your screen view.

                //This is the right side of your vp in the world. Depending how you draw you can add some more to it.
                float spawnX = camera.position.x + camera.viewportWidth / 2;
                //Then use this to spawn your object, since you hardcoded stuff I have no idea where to put it.

                //Now reset timer
                timer-= spawnTime;

                //And perhaps randomize the spawnTime? (between 2 and 4 seconds)
                Random random;
                spawnTime = random.nextFloat() * 2 + 2;
            }
        }

    @Override
    public void render(float delta) {
        Gdx.gl20.glClearColor(0.5f, 0.6f, 1, 3f);
        Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);

        stage.act();
        world.step(delta, 6 ,2);
        stage.draw();
    }

    @Override
    public void dispose() {
        stage.dispose();
        world.dispose();
    }
}

最佳答案

看看这段代码:

    float timer += Gdx.graphics.getRawDeltaTime();
    //Compare to spawntime
    if (timer >= float spawnTime)
    {
        //Spawn your object

float 词周围缺少括号 - 您正在尝试使用 (float)(转换运算符),但您这样做的方式会导致异常。

应该是

    if (timer >= (float)spawnTime)

或者更确切地说

    if (timer >= spawnTime)

因为spawnTime已经是float类型

关于java - Android Studio LibGDX 中更新方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652449/

相关文章:

java - Jpanel中的放大缩小功能

javascript - Cordova:尝试添加 Android 平台时出现 EACCES 错误。更改 PATH 并不能解决问题

java - 如何在 fragment 中设置内容 View

android-studio - android studio logcat 删除日期、进程信息

java - Android Eclipse 所有的 Spinner 字体都变白了

java - JdbcTemplate 不支持Parameterized Query 'IN' case?一定要通过NamedParameterJdbcTemplate吗?

java - 如何计算列中结果列表的数量?

android - roboblender-3.0.1.jar : not included in Android: javax. 工具。引用自 com.google.inject.blender.AnnotationDatabaseGenerator

android - 服务在不应该的时候自行启用

android - Studio:Gradle项目同步失败。