2012-02-29 78 views
0

我有这个代码应该移动一个对象,但它仍然可以有人说什么是错?位图不起作用

第一代码

视图类是我显示该对象代码。

import android.app.Activity; 
import android.os.Bundle; 

public class Game extends Activity { 
    Play View; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     View = new Play(this); 
     setContentView(View); 
    } 
} 

谢胜利代码

这是代码是该对象应当移动。

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.view.View; 


public class Play extends View { 

    int Y=0; 
    Bitmap object; 

    public Play(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub   object = BitmapFactory.decodeResource(getResources(), R.drawable.brid); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     canvas.drawColor(Color.GRAY); 
     canvas.drawBitmap(object, (canvas.getWidth()/2), Y, null); 
     if (Y < canvas.getHeight()){ 
      Y +=10; 
     }else { 
      Y = 0; 
     } 
    }  

} 

回答

1

首先不要叫你的Play对象“视图”,因为它指的是一个Android类。将其命名为“playView”...

要回答你的问题,当onDraw()完成时,View不会自行重绘。要做到这一点,你应该在onDraw()的末尾拨打invalidate()

为了使图画更加流畅,我建议将它放入Thread并制作游戏循环以运行绘图。查看SurfaceView,因为这比从View直接打到Canvas快。

+0

好的thx真正有用的:) – user1241123 2012-02-29 20:18:16

0

我不知道你期待发生什么,但View.onDraw()不会自动被调用多次为你,一旦你的观点呈现它不会被再次调用,直到一些请求重绘,通常使用View.invalidate()

您应该改用Animation来代替您想要的。

+0

对象将在屏幕上上下移动。 – user1241123 2012-02-29 20:15:02