2016-02-26 31 views
2

我試圖調用更新方法,以便每次經過一定時間時,它會銷燬並添加一個新的障礙,如遊戲循環。然而,當我這樣做,我得到這個系列的錯誤: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(); 
    } 
} 
+0

你可以發表你的gradle這個我覺得有一些問題,導致錯誤。 – Sushrita

回答

1

看看這個片段的代碼:

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類型的

+0

我應該創建一個SpawnEntity類嗎?該程序不斷抱怨錯誤 –