从playn中的文件中读取

use*_*426 1 playn

这是一个愚蠢的问题.

你如何阅读playn游戏中的文件?我尝试使用File和Scanner,就像我通常在标准的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我测试了File.canRead(),canWrite()和Execute(),它们都返回false.

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

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

此致,托吉尔

sam*_*ert 5

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

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

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

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