Проблема с кодом в Libgdx
AlexStein Дата: Понедельник, 08 Июня 2015, 17:01 | Сообщение # 1
частый гость
Сейчас нет на сайте
Код
import java.util.Iterator; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.ScreenAdapter; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Animation; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.TimeUtils; public class GameScreen extends ScreenAdapter { private Array<Coin> drops; private OrthographicCamera guiCamera; private long lastDropTime; private MyGdxGame game; private int level=1; private Vector3 touchPoint; enum enumCoin {Golden, Silver, Copper} enum Stage {Game, Pause, GameOver} private int Score=0; private Stage stage = Stage.Game; public GameScreen(MyGdxGame game){ this.game=game; drops = new Array<Coin>(); guiCamera=new OrthographicCamera(); guiCamera.setToOrtho(false,240,320); } public void update(){ if(stage == Stage.Game){ Iterator<Coin> iter = drops.iterator(); while (iter.hasNext()){ Coin drop = iter.next(); drop.y -= 200 * Gdx.graphics.getDeltaTime(); if (drop.y + 64 < 0) { iter.remove(); } if (Gdx.input.justTouched()){ guiCamera.unproject(touchPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0)); if (drop.contains(touchPoint.x, touchPoint.y)) { iter.remove(); return; } } } } else if(stage==Stage.Pause) { } else { } } public void draw(){ GL20 gl = Gdx.gl; gl.glClearColor(0, 0, 0, 1); gl.glClear(GL20.GL_COLOR_BUFFER_BIT); guiCamera.update(); game.batch.setProjectionMatrix(guiCamera.combined); game.batch.disableBlending(); game.batch.begin(); game.batch.draw(Assets.backgroundRegion, 0, 0, 240, 320); game.batch.end(); game.batch.enableBlending(); game.batch.begin(); for (Coin drop : drops) { drop.draw(); } game.batch.end(); if(TimeUtils.nanoTime()-lastDropTime>1000000000) spawnDrop(); } @Override public void render(float delta) { update(); draw(); } public void spawnDrop() { for(int i =0;i<level;i++) new Coin(); } class Coin extends Rectangle{ private enumCoin coin; private float stateTime=0f; private int number = MathUtils.random(1, 100); private Animation anim; private TextureRegion currentFrame; private float spawnTime; Coin(){ this.x=MathUtils.random(0, 240-17); this.y=320; this.width=17; this.height=33; drops.add(this); lastDropTime = TimeUtils.nanoTime(); if(number==100) { coin=enumCoin.Golden; anim= Assets.goldCoinAnim; } else if(number%10==0){ coin=enumCoin.Silver; anim=Assets.silverCoinAnim; } else{ coin=enumCoin.Copper; anim=Assets.copperCoinAnim; } } public int getCoin(){ if(coin==enumCoin.Golden) return 100; else if(coin==enumCoin.Silver) return 10; else return 1; } public void draw(){ stateTime += (Gdx.graphics.getDeltaTime()); currentFrame = anim.getKeyFrame(stateTime, true); game.batch.draw(currentFrame, this.getX()+(9-currentFrame.getRegionWidth()/2),this.getY(),currentFrame.getRegionWidth(),currentFrame.getRegionHeight()+15); } } }
В этом фрагменте кода выдаёт ошибку: Строка, которая генерирует исключение: guiCamera.unproject(touchPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0));
Сообщение отредактировал AlexStein - Суббота, 17 Марта 2018, 17:51
Egoor Дата: Среда, 10 Июня 2015, 19:22 | Сообщение # 2
участник
Сейчас нет на сайте
Код
Vector3 touchPoint = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); guiCamera.unproject(touchPoint);
Сообщение отредактировал Egoor - Среда, 10 Июня 2015, 19:22
AlexStein Дата: Среда, 10 Июня 2015, 21:56 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата Egoor (
)
Код Vector3 touchPoint = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); guiCamera.unproject(touchPoint);
Я конечно всё понимаю, но данная строка заменена этой guiCamera.unproject(touchPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0));
Snake174 Дата: Четверг, 11 Июня 2015, 06:30 | Сообщение # 4
участник
Сейчас нет на сайте
Вектор touchPoint создай сначала. Код
Exception in thread "LWJGL Application" java.lang.NullPointerException
Попытка обратиться к элементу, которого не существует.
Не следует обманывать инспектора Pipmak Assistant Love2D Exporter Love2D-Helpers Old Consoles Games
AlexStein Дата: Пятница, 12 Июня 2015, 09:36 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата Snake174 (
)
Вектор touchPoint создай сначала. Код Exception in thread "LWJGL Application" java.lang.NullPointerException Попытка обратиться к элементу, которого не существует.
Вектор создан и инициализирован в самом начале. А насчёт элемента - из за того, что я обращался к несуществующему классу, ошибку нашёл, спасибо.