我正在尝试制作TapTapRevenge式游戏,但我无法生成音符动画。我有一个笔记课:
class Note {
int hitTime;
int y;
int pos;
int iniX;
Bitmap img;
}
我从2D array
这样的笔记中做笔记:
int[][] rawNotes = {{0, 1000},{1,1000},{2,1100},{0,1250},{1,1500}};
使用以下方法
public void makeNotes(int[][] in) {
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);
int sW = metrics.widthPixels;
for(int i=0;i<in.length;i++) {
notes[i] = new Note();
notes[i].hitTime = in[i][1];
Bitmap temp = BitmapFactory.decodeResource(getResources(),R.drawable.ball);
notes[i].img = Bitmap.createScaledBitmap(temp, sW/10, sW/10, false);
switch (in[i][0]) {
case 0 :
notes[i].iniX = sW/3 - sW/20;
break;
case 1:
notes[i].iniX = sW/2 - sW/20;
break;
case 2:
notes[i].iniX = (2 * sW/3) - sW/20;
break;
}
}
}
我在我的onDraw
课程中使用SurfaceView
方法的以下几行更新了他们的位置,
for (Note note : notes) {
super.onDraw(canvas);
canvas.drawBitmap(bgr,0,0,null);
canvas.drawBitmap(note.img,note.iniX,note.y,null);
note.y = (1500 + (songTime - note.hitTime));
}
背景只是我的背景图片。
出于某种原因,只显示我的array
笔记中的第二项(在这种情况下为{1, 1000}
)。我不知道我在哪里出错了。
由于