在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;


![[Java] 跨类赋值后数值未改变 [Java] 跨类赋值后数值未改变](http://www.mshxw.com/aiimages/31/686082.png)
