1
Я новичок в Android, и у меня проблемы с перемещением объекта внутри onDraw(Canvas c)
. Ниже мой код. Надеюсь, кто-то скажет мне, как это исправить.Как перемещать объект внутри холста при касании объекта?
public class GameviewLuzon1 extends ImageView {
int y = 0;
int x = 0;
int obj1 = R.drawable.obj_androidball;
int obj2 = R.drawable.obj_drum;
/****************************************/
Drawable dr1 = getResources().getDrawable(obj1);
Bitmap bitmap1 = ((BitmapDrawable) dr1).getBitmap();
Drawable d1 = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap1, 20, 20, true));
float d1_startX = (float) 0.00;
float d1_startY = (float) 0.00;
float d1_movementX = 2;
float d1_movementY = 2;
Drawable dr2 = getResources().getDrawable(obj2);
Bitmap bitmap2 = ((BitmapDrawable) dr2).getBitmap();
Drawable d2 = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap2, 35, 35, true));
float d2_startX = (float) 0.00;
float d2_startY = (float) 0.00;
/****************************************/
public GameviewLuzon1(Context context, AttributeSet attrs) {
super(context, attrs);
}
protected void onDraw(Canvas c) {
d1_startX = (float) (this.getWidth()/d1_movementX);
d1_startY = (float) (this.getHeight()/d1_movementY);
d2_startX = (float) (this.getWidth()/5.75);
d2_startY = (float) (this.getHeight()/7.99);
/****************************************/
c.drawBitmap(((BitmapDrawable) d1).getBitmap(), d1_startX, d1_startY, null);
c.drawBitmap(((BitmapDrawable) d2).getBitmap(), d2_startX, d2_startY, null);
/****************************************/
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
if(touchX >= d1_startX && touchX <= (d1_startX + d1.getIntrinsicWidth())
&& touchY >= d1_startY && touchY <= (d1_startY +d1.getIntrinsicHeight())) {
Log.w("d1 success","you touched object");
d1_movementX = 0;
d1_movementY = 0;
}
else if(touchX >= d2_startX && touchX <= (d2_startX + d2.getIntrinsicWidth())
&& touchY >= d2_startY && touchY <= (d2_startY +d2.getIntrinsicHeight())) {
Log.w("d2 success","you touched object");
invalidate();
}
else {
Log.w("epic","wala jud ka kaigu");
}
/*Commented out for debugging purpose only*/
/*Log.w("touch",Float.toString(touchX));
Log.w("start of Image",Float.toString(d1_startX));
Log.w("edge of image",Float.toString(d1_startX + d1.getIntrinsicWidth()));*/
return true;
}
}
привет админ .., спасибо, но вы можете закрыть этот вопрос сейчас .., я ответил через несколько часов .., и вот мой код сейчас .., –