2013-05-12 151 views
0

这是我的课。我想在我的简单游戏的GameEngine使用它..但我不明白这里的问题..它不工作..drawBitmap NullPointerException异常

public class Droid { 

    private Bitmap  bitmap; 
    private int  x;  
    private int  y;  
    private boolean   touched;  
    private Speed  speed; 
    private Paint  paint; 

    public Droid(Resources resources, Bitmap bitmap, int x, int y) 
     { 
      this.bitmap = bitmap; 
      this.x = x; 
      this.y = y; 

      // create droid and load bitmap 
      bitmap = BitmapFactory.decodeResource(resources, 
        R.drawable.droid_1); 

     } 

       public void draw(Canvas canvas) 
     { 

      canvas.drawBitmap(bitmap, x - bitmap.getWidth()/2, 
        y- bitmap.getHeight()/2, paint); 
     } 



    } 

当我运行代码,ı在draw()方法见nullpointerexception ...如何解决这个问题?感谢您的帮助......

回答

0

//我希望,我解决了这个问题。最后.. :)

公共类Droid {

private Bitmap  bitmap; 
private int  x;  
private int  y;  
private boolean   touched;  
private Speed  speed; 
private Paint  paint; 

public Droid(Resources resources, Bitmap bitmap, int x, int y) 
    { 
     paint= new Paint(); 
// this.bitmap = bitmap; // delete this part, it will work.. :))) 
    this.x = x; 
    this.y = y; 

     // create droid and load bitmap 
     bitmap = BitmapFactory.decodeResource(resources, 
       R.drawable.droid_1); 

    } 

      public void draw(Canvas canvas) 
    { 

     canvas.drawBitmap(bitmap, x - bitmap.getWidth()/2, 
       y- bitmap.getHeight()/2, paint); 
    } 



} 
0

MainActivity

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
    MyView mv = new MyView(this,bmp,100,100); 
      // pass the bitmap and x and y co-ordinates to the constructor of Myview 
    setContentView(mv); // set the content to your activity 
} 
    } 

自定义视图类

public class MyView extends View{ // should extend view 
Context c; 
private Bitmap bitmap; 
private int  x;  
private int  y; 
private Paint  paint; 
public MyView(Context context,Bitmap bmp, int i, int j) { 
    super(context); 
    // TODO Auto-generated constructor stub 
    this.c=context; 
    this.bitmap=bmp; 
    this.x=i; 
    this.y=j; 
    paint= new Paint(); 
} 
@Override 
    public void draw(Canvas canvas) // override view on draw and draw the bitmap 
    { 

    canvas.drawBitmap(bitmap, x - bitmap.getWidth()/2, 
      y- bitmap.getHeight()/2, paint); // instead of paint you can have null 
    } 
} 
+0

我试过这个:canvas.draw位图(位图,x - bitmap.getWidth()/ 2, y-bitmap.getHeight()/ 2,null);但它tdidnt工作.. – futuristixa 2013-05-12 08:07:02

+0

我会在几秒钟内更新我的答案 – Raghunandan 2013-05-12 08:11:49

+0

感谢您的帮助..ı尝试了解您的代码..公共类Droid不是一个扩展视图类..所以这可能是一个问题。 。如果我可以解决,我会回来...... – futuristixa 2013-05-12 08:30:49