android应用程序toturial 74
我在youtube上关注“thenewboston”的toturial,我在第74届toturial,我在触摸“GFXSurface”应用程序的屏幕后立即获得了一个FC。我尝试调试,它停在“canvas.drawBitmap(test,(x-(test.getWidth()/2)),(y-(test.getHeight()/2)),null)行上。” 有什么想法吗? 以下是toturial的链接: 这是我的代码:android应用程序toturial 74,android,canvas,youtube,Android,Canvas,Youtube,我在youtube上关注“thenewboston”的toturial,我在第74届toturial,我在触摸“GFXSurface”应用程序的屏幕后立即获得了一个FC。我尝试调试,它停在“canvas.drawBitmap(test,(x-(test.getWidth()/2)),(y-(test.getHeight()/2)),null)行上。” 有什么想法吗? 以下是toturial的链接: 这是我的代码: public class GFXSurface extends Activity
public class GFXSurface extends Activity implements OnTouchListener {
MyBringBackSurface ourSurfaceView;
float x, y, sX, sY, fX, fY;
Bitmap test, plus;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
ourSurfaceView = new MyBringBackSurface(this);
ourSurfaceView.setOnTouchListener(this);
Bitmap test = BitmapFactory.decodeResource(getResources(),
R.drawable.green_ball);
Bitmap plus = BitmapFactory.decodeResource(getResources(),
R.drawable.button_plus);
x=0;
y=0;
sX=0;
sY=0;
fX=0;
fY=0;
setContentView(ourSurfaceView);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
ourSurfaceView.pause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
ourSurfaceView.resume();
}
@Override
public boolean onTouch(View arg0, MotionEvent event) {
// TODO Auto-generated method stub
x = event.getX();
y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
sX = event.getX();
sY = event.getY();
break;
case MotionEvent.ACTION_UP:
fX = event.getX();
fY = event.getY();
break;
}
return true;
}
public class MyBringBackSurface extends SurfaceView implements Runnable {
SurfaceHolder ourHolder;
Thread ourThread = null;
Boolean isRunning = false;
public MyBringBackSurface(Context context) {
super(context);
// TODO Auto-generated constructor stub
ourHolder = getHolder();
}
public void pause() {
isRunning = false;
while (true) {
try {
ourThread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
ourThread = null;
}
public void resume() {
isRunning = true;
ourThread = new Thread(this);
ourThread.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
while (isRunning) {
if (!ourHolder.getSurface().isValid())
continue;
Canvas canvas = ourHolder.lockCanvas();
canvas.drawRGB(23, 233, 254);
if (x != 0 && y != 0) {
canvas.drawBitmap(test, (x - (test.getWidth() / 2)),
(y - (test.getHeight() / 2)), null);
}
if (sX != 0 && sY != 0) {
canvas.drawBitmap(plus, (sX - (plus.getWidth() / 2)),
(sY - (plus.getHeight() / 2)), null);
}
if (fX != 0 && fY != 0) {
canvas.drawBitmap(plus, (fX - (plus.getWidth() / 2)),
(fY - (plus.getHeight() / 2)), null);
}
ourHolder.unlockCanvasAndPost(canvas);
}
}
}
}
}
应该是:
test = BitmapFactory.decodeResource(getResources(),
R.drawable.green_ball);
类中的test
变量永远不会被设置,当您尝试使用它时,它是空的
(您的
plus
变量也是如此)您的日志说明了什么?没问题。请随意标记为已接受的答案。
test = BitmapFactory.decodeResource(getResources(),
R.drawable.green_ball);