こんばんはnakajimaです
ゲームをつくりながらandroidを勉強しています。
ゲーム制作にあたってnullpointerexceptionが出たのですが、それがどういう原因なのかわからないので、質問させていただきます。
パズルゲームなのですが、AIを作って、これと対戦できるようにするつもりです。(イメージとしてはぷよぷよのような対戦画面)
そこで、ひとつのactivityに、二つのsurfaceViewを設置し、二つは独立のプレイヤー用とAI用のゲーム画面を映すようにしたいと考えております。
そこでまず,displayの半分の大きさのuser用のゲームsurfaceViewを画面に設置できるか試してみたのですが、デバッグしてみると、surfaceViewのダブルバッファリング用にcreateしたbitmapを参照している箇所でnullPointerExceptionが出ました。
createした直後のbitmapの中身を見てみると、
mDensity=240,mHeight=-1,mWidth=-1,mNinePatchChunck=null
のようになっていました。このbitmap自体はnullではなかったのですがmHeightが-1になっているのが原因なのではないかと疑っています。
しかしcreateBitmapの引数の幅、高さには値を与えているし、一体何が原因なのかわからなくて困っています。
以下はmainAcitvityのoncreateメソッド内の実装です。
何かわかる方がいましたら知恵を貸してください。よろしくお願いします。
public class MainActivity extends Activity {
private User user;//userクラスのメンバとしてsurfaceViewを持っている
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
user=new User(300,700,this);//ここのコンストラクタの第一、第二引数をcreatebitmapの幅高さとしてコンストラクタ内でbitmapを作っています(値は今は適当です)
setContentView(user.gameView);//userのゲームsurfaceViewを表示
}
}