2012-02-02 68 views
1

这是一个愚蠢的问题。从playn中读取文件

你如何在游戏playn读取文件?我尝试使用文件和扫描仪像我通常做一个标准的Java程序:

void readFromFile(){ 

    int x; 
    int y; 
    int pixel; 
    int[][] board; 

    try{ 

     Scanner scan = new Scanner(new File(in)); 

     x = scan.nextInt(); 
     y = scan.nextInt(); 
     pixel = scan.nextInt(); 
     Point start = new Point(scan.nextInt(), scan.nextInt()); 
     Point dir = new Point(scan.nextInt(), scan.nextInt()); 
     Point end = new Point(scan.nextInt(), scan.nextInt()); 
     int antRoads = scan.nextInt(); 

     board = new int[x][y]; 

     for (int i = 0; i < y; i++){ 
      for (int j = 0; j < x; j++){ 
       board[i][j] = scan.nextInt(); 
      } 
     } 


     lev = new Level(board, start, dir, end, antRoads, pixel, x, y); 


    } catch(FileNotFoundException e){ 
     System.out.println(e); 
    } 
} 

我测试File.canRead(),canWrite(),并可以执行(),它们都返回false。

我应该使用assetMannager()。gettext的()的东西?如果是这种情况,有人可以告诉我它是如何工作的? (或者是什么,ResourceCallback是如何工作的?)

我的目标是有一个文件夹命名充满了常规的文本格式,就像标准的图像文件夹中的地图“地图”。

问候, Torgeir

回答

5

你不能做正常的文件I/O在PlayN游戏,因为游戏被编译成JavaScript和运行在浏览器(使用HTML5后端时),浏览器不支持任何文件I/O(至少不是您需要用于这些目的的通用文件I/O)。

浏览器也不支持,甚至一个字节流的想法,或任何形式的二进制I/O(这可能最终到来,但它支持所有浏览器之前,这将是个年龄段)。

所以,你必须使用AssetManager.getText来读取数据文件。如果你喜欢,你可以用JSON对它们进行编码,并使用PlayN.json()来解码它们,或者你可以使用自己的基于字符串的自定义格式。

如果您不打算使用HTML5后端进行部署,您可以创建一个“LevelReader”接口并在Android或iOS后端实现该接口,并在这些平台上使用本机文件I/O功能。