Има ли начин да получите координатите на събитие с докосване върху карта, която може да се превърта?
Това означава, че когато докосна в една точка на екрана, getX()
и getY()
връщат съответните стойности и след това, когато превъртя картата, върнатите координати трябва да са спрямо картата, а не към екрана.
напр. Имам фонова карта 750x750, а размерът на екрана на устройството ми е 480x800.
когато докосна за първи път, кажете, че върнатите координати са (100, 200). сега, когато превъртя картата и докосна някъде другаде, получавам координатите като 200, 200.
Искам да получа координатите по отношение на картата, а не на екрана.
Дълго време се опитвах да разбера това и напразно рових мрежата и други сайтове.
моля помогнете.
благодаря предварително
\m/
имам нужда от координатите, защото разработвам игра, в която имам голяма карта и обекти, поставени върху нея. когато превъртам картата, имам нужда от обекти, които да се движат заедно с тях в една и съща позиция. ето моят код:
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
touchStart.set(ev.getX(), ev.getY());
x = ev.getX();
y = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
newX = ev.getX() - touchStart.x + prevPicStart.x;
newY = ev.getY() - touchStart.y + prevPicStart.y;
if ((newX <= 0 && newX > 0 - mBG.getWidth() + Craz.DISP_WIDTH)) {
picStart.x = newX;
}
if ((newY <= 0 && newY > 0 - mBG.getHeight() + Craz.DISP_HEIGHT)) {
picStart.y = newY;
}
invalidate();
break;
case MotionEvent.ACTION_UP:
prevPicStart.x = picStart.x;
prevPicStart.y = picStart.y;
break;
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawBitmap(mBG, picStart.x, picStart.y, paint);
canvas.translate(picStart.x, picStart.y);
mBDoor.draw(canvas);
}
scrollTo()
/scrollBy()
? можете просто да добавитеgetScroll*()
стойности към координатите си спрямо екрана. - person bigstones   schedule 05.04.2011