我有这段代码但是它们在
中显示错误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);
}
}
答案 0 :(得分:0)
编辑:首先,仔细检查您的导入声明。 Android API中存在多个Element
类,即android.renderscript.Element
,您可能无意中访问了这些类,而不是您的自定义Element
类。
您的Element
构造函数需要Resources
个对象作为其第一个参数。但是,您在扩展getResources()
的类中调用SurfaceView
,而getResources()
是与Context
相关联的方法。
SurfaceView
是View
的子类,具有getContext()
方法。所以,而不是:
myelement=new Element(getResources(),(int)event.getX(),(int)event.getY());
试
myelement=new Element(this.getContext().getResources(),(int)event.getX(),(int)event.getY());