在Android中使用SurfaceView编写游戏的地图功能时,使用了两个 int类型的值 来存储地图的相对数值。
解决方法: 设为status变量
public status int mapX; public status int mapY;
情景再现:
地图类如下:
public class MapController{ public int mapX = 0; public int mapY = 0; public int getMapX(){ return mapX; } public int getMapY(){ System.out.println(1+"——"+mapController.getMapX()); return mapY; } public void setMapX(int num){ System.out.println(2+"——"+mapController.getMapX()); mapX = num; } public void setMapY(int num){ mapY = num; } }
控制类如下:
public class JoyController{ int hubMapX = 1,hubMapY = 1; public JoyController(){ mapController.setMapX(hubMapX); mapController.setMapY(hubMapY); System.out.println(3+"——"+mapController.getMapX()); } }
调用类如下:
public class MoveByMap{ MapController mapController; public MoveByMap(){ mapController = new MapController(); System.out.println(4+"——"+mapController.getMapX()); } }
1、在控制类中改变地图类里的mapX和mapY的值;
2、在调用类中调用地图类李的mapX和mapY的值;
最后发现:
调用类中的4+"——"得到的mapController.getMapX();的值为0
地图类中的1+"——"得到的mapController.getMapX();的值为0
地图类中的2+"——"得到的mapController.getMapX();的值为1
控制类中的3+"——"得到的mapController.getMapX();的值为1
为此,只要将地图类中的mapX和mapY声明更改为如下即可使得上面1 2 3 4的println都为 1
public status int mapX; public status int mapY;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)