从playn中的文件中读取

时间:2012-02-02 09:33:21

标签: 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()和Execute(),它们都返回false。

我应该使用assetMannager()。getText()还是其他什么?如果是这样的话可以有人告诉我它是如何工作的吗? (或者ResourceCallback的工作原理和方式是什么?)

我的目标是让一个名为“Maps”的文件夹以常规文本格式填充地图,就像标准的Image文件夹一样。

此致 Torgeir

1 个答案:

答案 0 :(得分:5)

你不能在PlayN游戏中进行普通的文件I / O,因为游戏被编译成JavaScript并在浏览器中运行(当使用HTML5后端时),并且浏览器不支持文件I / O(至少不支持出于这些目的,您需要的通用文件I / O。

浏览器甚至不支持字节流或任何类型的二进制I / O(这可能最终到达,但在所有浏览器都支持它之前的年龄)。

因此您必须使用AssetManager.getText来读取数据文件。如果您愿意,可以使用JSON对它们进行编码,并使用PlayN.json()对其进行解码,也可以使用自己的自定义字符串格式。

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