![](/img/trans.png)
[英]JavaFx Charts and getting values for Y Values from XYChart.Series knowing the X values
[英]getting X and Y values from an onTouchEvent in android
我正在开发一个Android飞机射击游戏,每次玩家移动飞机时都需要获得X和Y位置,以检测碰撞。
下面的课程处理玩家飞机的运动
package com.pe44.dukes;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
public class DukesGame extends Activity {
final DukesEngine gameEngine = new DukesEngine();
private DukesGameView gameView;
public static float playerPosX, playerPosY;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gameView = new DukesGameView(this);
setContentView(gameView);
}
@Override
protected void onResume() {
super.onResume();
gameView.onResume();
}
@Override
protected void onPause() {
super.onPause();
gameView.onPause();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//
playerPosX = event.getX();
playerPosY = event.getY();
String SPposX = Float.toString(playerPosX);
String SPposY = Float.toString(playerPosY);
Log.i(SPposX, SPposY);
int height = DukesEngine.display.getHeight() / 4;
int playableArea = DukesEngine.display.getHeight() - height;
if (playerPosY > playableArea){
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
if(playerPosX < DukesEngine.display.getWidth() / 2){
DukesEngine.playerFlightAction = DukesEngine.player_turn_left;
}else{
DukesEngine.playerFlightAction = DukesEngine.player_turn_right;
}
break;
case MotionEvent.ACTION_UP:
DukesEngine.playerFlightAction = DukesEngine.PLAYER_RELEASE;
break;
}
}
return false;
}
public static float getPlayerX(){
return playerPosX;
}
public static float getPlayerY(){
return playerPosY;
}
}
我需要传递playerPosX = event.getX(); and playerPosY = event.getY();
playerPosX = event.getX(); and playerPosY = event.getY();
进入要处理碰撞检测的渲染器类。
我创建了两个get方法
public static float getPlayerX(){
return playerPosX;
}
public static float getPlayerY(){
return playerPosY;
}
我编写的用于在renderer类中处理碰撞检测的代码
private void detectCollisionsOnPlayer(){
float playerPosX = DukesGame.getPlayerX();
float playerPosY = DukesGame.getPlayerY();
String posx = Float.toString(playerPosX);
String posy = Float.toString(playerPosX);
Log.d(posx,posy);
for (int d = 0; d < 3; d++){
for (int x = 0; x < DukesEngine.total_fighters + DukesEngine.total_jets + DukesEngine.total_warships - 1; x++ ){
if(enemies[x].posX == playerPosX && enemies[x].posY == playerPosY ){
Log.d("Game Over", "game over");
}
}
}
}
由于某些原因,X和Y值不会传递到我在DukesGame类中创建的两个方法中。 谁能为这个问题提出解决方案?
我建议您使用接口而不是设置静态值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.