私は見て、見て、答えを見つけることができません。しかし、ここに私の問題があります。メインの Game クラスの目盛りに基づいて、別のクラスの int を変更したいと考えています。コードは次のとおりです。
痕跡:
02-16 02:10:58.605: W/dalvikvm(1578): threadid=13: thread exiting with uncaught exception (group=0x40c5ca68)
02-16 02:10:58.615: E/AndroidRuntime(1578): FATAL EXCEPTION: Thread-16720
02-16 02:10:58.615: E/AndroidRuntime(1578): java.lang.NullPointerException
02-16 02:10:58.615: E/AndroidRuntime(1578): at com.mojang.ld22.Game.tick(Game.java:374)
02-16 02:10:58.615: E/AndroidRuntime(1578): at com.mojang.ld22.Game.iterate(Game.java:300)
02-16 02:10:58.615: E/AndroidRuntime(1578): at com.mojang.ld22.GameActivity$4.run(GameActivity.java:136)
02-16 02:10:58.615: E/AndroidRuntime(1578): at java.lang.Thread.run(Thread.java:856)
Game.java スニペット
public void tick() {
tickCount++;
...
...
...
if (tickCount % 1000 == 0) {
if (rising) {
lightlvl++;
Would error here too clock.time++; <-----------
if (lightlvl >= 8) {
rising = false;
}
} else {
lightlvl--;
LINE 374 ----------> clock.time--; <------------
if (lightlvl <= -2)
rising = true;
}
}
}
}
そしてClock.java
package com.mojang.ld22.entity;
import com.mojang.ld22.crafting.Crafting;
import com.mojang.ld22.entity.particle.TextParticle;
import com.mojang.ld22.entity.particle.TimeClock;
import com.mojang.ld22.gfx.Color;
import com.mojang.ld22.gfx.Screen;
import com.mojang.ld22.screen.CraftingMenu;
import com.mojang.ld22.item.FurnitureItem;
public class Clock extends Furniture {
/**
*
*/
private static final long serialVersionUID = 3146189783597003582L;
Player player;
public int time = 0;
public int clock = 1;
public boolean rising = false;
public Clock() {
super("Clock");
col = Color.get(-1, 100, 321, 431);
sprite = 10;
xr = 3;
yr = 2;
}
@Override
public void tick(){
if (time <= 0)
clock = 1;
if (time == 1)
clock = 1;
if (time == 2)
clock = 2;
if (time == 3)
clock = 3;
if (time == 4)
clock = 4;
if (time == 5)
clock = 5;
if (time == 6)
clock = 6;
if (time == 7)
clock = 7;
if (time == 8);
clock = 8;
}
@Override
public void render(Screen screen){
int col = Color.get(-1, 531, 000, 534);
//incorrect times TODO
if (clock == 8)
screen.render(x - 8, y - 8, 7 + 11 * 32, col, 0);
if (clock == 6)
screen.render(x - 8, y - 8, 8 + 11 * 32, col, 0);
//noon midnight
if (clock == 5)
screen.render(x - 8, y - 8, 9 + 11 * 32, col, 0);
if (clock == 4)
screen.render(x - 8, y - 8, 10 + 11 * 32, col, 0);
//Before noon after noon
if (clock == 3)
screen.render(x - 8, y - 8, 11 + 11 * 32, col, 0);
if (clock == 2)
screen.render(x - 8, y - 8, 12 + 11 * 32, col, 0);
//730pm 530pm
if (clock == 1)
screen.render(x - 8, y - 8, 13 + 11 * 32, col, 0);
if (clock == -1)
screen.render(x - 8, y - 8, 14 + 11 * 32, col, 0);
}
}
そして、はい、これはきれいではありません。これは基本的に、game.java から clock.java に int をプルできなかったときに試したものです。これは、送信をテストするためのものでした。プレイヤーがインベントリから取り出すまで clock.java が作成されないため、別々のティックを使用することはできません。
これがうまくいくことを願っています。必要な場合は、さらにコードを提供できます。