1

这是一个愚蠢的问题。

如何在 playn 游戏中读取文件?我尝试像通常在标准 java 程序中那样使用 File 和 Scanner:

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

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

我的目标是创建一个名为“Maps”的文件夹,其中包含常规文本格式的地图,就像标准的 Image 文件夹一样。

问候, 托吉尔

4

1 回答 1

5

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

浏览器甚至也不支持字节流或任何类型的二进制 I/O 的概念(这可能最终会出现,但在所有浏览器都支持之前还需要很长时间)。

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

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

于 2012-02-02T17:12:24.577 回答