Android中未定义构造函数

时间:2015-10-07 08:51:43

标签: android

我有这段代码但是它们在

中显示错误
myelement=new Element(getResources(),(int)event.getX(),(int)event.getY());
     

(错误:构造函数未定义。

     

myelement.mX=(int)event.getX()-myelement.bitmap.getWidth()/2;
     

错误:mX无法解析或不是字段

     

myelement.doDraw(canvas);
     

错误:对于类型Element

,方法doDraw(Canvas)未定义
public class GamePanel extends SurfaceView implements SurfaceHolder.Callback{

Element myelement;

private MainThread thread;  



   public GamePanel(Context context) {          
          super(context);             
          getHolder().addCallback(this);
          thread =new MainThread(getHolder(),this); 
          setFocusable(true);             
   }

 public boolean onTouchEvent(MotionEvent event) {

          if(myelement==null)
          {

              myelement=new Element(getResources(),(int)event.getX(),(int)event.getY());
                 return true;
          }
          else
          {               
                 myelement.mX=(int)event.getX()-myelement.bitmap.getWidth()/2;
                 myelement.mY=(int)event.getY()-myelement.bitmap.getHeight()/2;
          }

          if(event.getAction()==MotionEvent.ACTION_DOWN)
          {
                 myelement.mX=(int)event.getX()-myelement.bitmap.getWidth()/2;
                 myelement.mY=(int)event.getY()-myelement.bitmap.getHeight()/2;

          }
          if(event.getAction()==MotionEvent.ACTION_UP)
          {
                 myelement.mX=(int)event.getX()-myelement.bitmap.getWidth()/2;
                 myelement.mY=(int)event.getY()-myelement.bitmap.getHeight()/2;

          }
          if(event.getAction()==MotionEvent.ACTION_MOVE)
          {
                 myelement.mX=(int)event.getX()-myelement.bitmap.getWidth()/2;
                 myelement.mY=(int)event.getY()-myelement.bitmap.getHeight()/2;


          }

          return true;
   }

protected void onDraw(Canvas canvas) {

          super.onDraw(canvas);          

          if(myelement!=null)
                 myelement.doDraw(canvas);
   }

public class Element {

Bitmap bitmap; 
int mX; 
int mY; 

public Element(Resources res, int x,int y)
{
       bitmap=BitmapFactory.decodeResource(res,R.drawable.ic_launcher);

       mX=x-bitmap.getWidth()/2;
       mY=y-bitmap.getHeight()/2;
}
public Element(Resources res, int x, int y, int idHinh)
{
       bitmap=BitmapFactory.decodeResource(res,idHinh);
       mX=x-bitmap.getWidth()/2;
       mY=y-bitmap.getHeight()/2;
}
public void doDraw(Canvas canvas)   {

       canvas.drawBitmap(bitmap, mX,mY, null);
}
}

1 个答案:

答案 0 :(得分:0)

编辑:首先,仔细检查您的导入声明。 Android API中存在多个Element类,即android.renderscript.Element,您可能无意中访问了这些类,而不是您的自定义Element类。

您的Element构造函数需要Resources个对象作为其第一个参数。但是,您在扩展getResources()的类中调用SurfaceView,而getResources()是与Context相关联的方法。

SurfaceViewView的子类,具有getContext()方法。所以,而不是:

myelement=new Element(getResources(),(int)event.getX(),(int)event.getY());

myelement=new Element(this.getContext().getResources(),(int)event.getX(),(int)event.getY());