0
我有一個問題,我想解決了近2天。 (它結束了切換到OpenGL的:d) 反正...我有帆布,我試圖做一個簡單的貪吃蛇遊戲。就爲了這個問題想象我們的蛇是從5×5像素矩形組成,他留下的蹤跡(沒有清算),並移動到從0開始,50位右...這裏是代碼:Android的帆布怪異移
public class Snake extends AnimationWallpaper {
@Override
public Engine onCreateEngine() {
return new SnakeEngine();
}
class SnakeEngine extends AnimationEngine {
int i = 0;
Paint paint = new Paint();
@Override
public void onCreate(SurfaceHolder surfaceHolder) {
super.onCreate(surfaceHolder);
// By default we don't get touch events, so enable them.
setTouchEventsEnabled(true);
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
}
@Override
public void onOffsetsChanged(float xOffset, float yOffset,
float xOffsetStep, float yOffsetStep, int xPixelOffset,
int yPixelOffset) {
super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep,
xPixelOffset, yPixelOffset);
}
@Override
public Bundle onCommand(String action, int x, int y, int z,
Bundle extras, boolean resultRequested) {
if ("android.wallpaper.tap".equals(action)) {
}
return super.onCommand(action, x, y, z, extras, resultRequested);
}
@Override
protected void drawFrame() {
SurfaceHolder holder = getSurfaceHolder();
Canvas c = null;
try {
c = holder.lockCanvas();
if (c != null) {
draw(c);
}
} finally {
if (c != null)
holder.unlockCanvasAndPost(c);
}
}
void draw(Canvas c) {
//c.save();
//c.drawColor(0xff000000);
paint.setAntiAlias(true);
// paint the fill
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
c.drawRect(i*5, 50, (i+1)*5, 55, paint);
//c.restore();
}
@Override
protected void iteration() {
i++;
super.iteration();
}
}
}
而且這裏是輸出:
而這還不是全部,當它繪製它有點移...這意味着什麼,你看到的是轉移到右側所以它並不actualy在同一個地方站...
如果你有任何想法,爲什麼它的行爲,請告訴我!
不,我不想明確,actualy我想oposite。但它應該畫直線而不是虛線......這就是我正在談論的「轉變」。 Srsly不知道問題在哪裏......我記錄了實際變量,他們很好......也許有一些DPI問題?不知道... – arenaq