Я пытаюсь инициализировать 3D-массив для игры, над которой я работаю, после нескольких изменений синтаксиса я не мог понять, как заставить его работать!Я начал с:
public class AnimationView extends SurfaceView implements SurfaceHolder.Callback {//Create bitmaps.
Bitmap bitmapGoal = BitmapFactory.decodeResource(this.getResources(), R.drawable.goal);
Bitmap bitmapOrig = BitmapFactory.decodeResource(this.getResources(), R.drawable.ball);
Bitmap bitmap = Bitmap.createScaledBitmap(bitmapOrig, 150, 150, true);
//initialize the canvas.
private Canvas c;
private int score[] = {0, 0, 0, 0};
public int numBalls = 1;
//we support up to 4 balls. thus each array is 4 bit.
private int ballX[] = {0, 200, 400, 600};
private double ballY[] = {0, 0, 0, 0};
private double dirV[] = {0, 0, 0, 0};
private int dirH[] = {30, 30, 30, 30};
private static final int SCALE = 10;
private double elasticity = .6;
private int rotationNow[] = {5, 5, 5, 5};
private int rotationDraw[] = {0, 0, 0, 0};
class AnimationThread extends Thread {
//Are we running currently?
private boolean mRun;
//layer 1 is how many balls, 4 layers deep.
//layer 2 is which ball we're talking about, either 1, 2, 3, or 4 layers deep, depending on layer 1.
//layer 3 is the bounds of the ball, dependent on how many there are total.
//layer 3 is formatted x-min, x-max, y-min, y-max
int[][][] bounds = new int[][][] {
{ {0, c.getWidth() - bitmap.getWidth(), 0, c.getHeight() - bitmap.getHeight()}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
//end first layer
{ {0, c.getWidth() / 2 - bitmap.getWidth(), 0, c.getHeight() - bitmap.getHeight()}, {c.getWidth() / 2, c.getWidth() - bitmap.getWidth(), 0, c.getHeight() - bitmap.getHeight()}, {0, 0, 0, 0}, {0, 0, 0, 0} },
//end second layer
{ {0, c.getWidth() / 3 - bitmap.getWidth(), 0, c.getHeight() - bitmap.getHeight()}, {c.getWidth() / 3, c.getWidth() * 2 / 3 - bitmap.getWidth(), 0, c.getHeight() - bitmap.getHeight()}, {c.getWidth() * 2 / 3, c.getWidth() - bitmap.getWidth(), 0, c.getHeight() - bitmap.getHeight()}, {0, 0, 0, 0} },
//end third layer
{ {0, c.getWidth() / 2, 0, c.getHeight() / 2}, {c.getWidth() / 2, c.getWidth(), 0, c.getHeight() / 2}, {0, c.getWidth() / 2, c.getHeight() / 2, c.getHeight()}, {c.getWidth() / 2, c.getWidth(), c.getHeight() / 2, c.getHeight()} }
//end fourth, and final layer!
};
Извините за странную ошибку форматирования.Я знаю, что это ничего не помогает.Существует новая строка между ymax и int [] [] [].Вам не обязательно просматривать его и понимать, но это скомпилировано, а затем ошибочно во время выполнения.И тогда я попытался создать простой трехмерный массив, я начал с:
int[][][] bounds = new int[1][1][1];<br/>
bounds[0][0][0] = 0;
У Eclipse его красная волнистая линия была под точкой с запятой в первой строке.Сказать «Синтаксическая ошибка на токене»; «, {ожидается после этого токена»
Это то, что вызывает разочарование.Потому что тот же код, скопированный / вставленный в обычную программу Java, работает нормально, но я НЕ МОГУ заставить его работать внутри проекта Android.Затем я упростил некоторые вещи до этого:
int[] bounds = new int[1];<br/>
bounds[0] = 0;
Точно такая же ошибка, точно такое же место!Почему затмение ??Я также попробовал это с "int bounds [] [] []" в отличие от "int [] [] [] bounds", но без разницы, все та же ошибка.
Я перезагрузил компьютер, очистилМой проект несколько раз перезапускал Eclipse.У меня нет идей.Есть ли у вас ??