0

JSONファイルをロードして解析しようとしているこのコードがあります。しかし、作成したクラスでロードしようとすると (画像とサウンドをロードできます)、次のエラーが表示されます。

Error #2124: Loaded file is an unknown type. URL: http://192.168.1.19/Sheet1.json

これは私がそれをロードするために使用する関数ですが、Flash がファイルの種類を認識できるようにするにはどうすればよいですか?

    public function LoadString(path:String) {
        var stringLoader:flash.display.Loader = new flash.display.Loader();
        stringLoader.contentLoaderInfo.addEventListener(LoaderEvent.COMPLETE, loadStringComplete);
        stringLoader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpError,false,0,true);
        stringLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, error, false, 0 ,true);
        stringLoader.load(new URLRequest(path));
    }

    private function loadStringComplete(e:Event) {
        try {
            dispatchEvent(new LoaderEvent(LoaderEvent.STRING_LOADED,0,0,e.target.data,true));
        } catch (error:*) {
            dispatchEvent(new LoaderEvent(LoaderEvent.ERROR,0,0,"Error: "+ error.toString(),true));
        }
    }

JSON ファイルのコンテンツは、Flash CS6 の新しい Spritesheet メソッドで生成されます。

{"frames": {

"Front AA0000":
{
    "frame": {"x":0,"y":0,"w":12,"h":13},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":12,"h":13},
    "sourceSize": {"w":12,"h":13}
},
"Rot AA0000":
{
    "frame": {"x":12,"y":0,"w":14,"h":6},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":14,"y":8,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0001":
{
    "frame": {"x":0,"y":13,"w":20,"h":8},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":9,"y":6,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0002":
{
    "frame": {"x":0,"y":21,"w":28,"h":8},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":4,"y":6,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0003":
{
    "frame": {"x":0,"y":29,"w":24,"h":8},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":4,"y":6,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0004":
{
    "frame": {"x":0,"y":37,"w":28,"h":11},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":0,"y":3,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0005":
{
    "frame": {"x":0,"y":48,"w":28,"h":14},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":0,"y":0,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
}},
"meta": {
    "app": "Adobe Flash CS6",
    "version": "12.0.0.481",
    "image": "Rocket AA 8-Bit.png",
    "format": "RGB8",
    "size": {"w":32,"h":64},
    "scale": "1"
}
}
4

1 に答える 1

0

インターネットでいくつかの調査を行った結果、問題が見つかりました。Flash は、画像、サウンド、および swf ファイルのデフォルト ローダーを使用します。他のファイルをロードするには、URLLoader を使用する必要があります。この関数を使用して、テキスト ファイルを正常にロードしました。LoaderEvent は、文字列を渡すために作成したカスタム Event クラスです。

public function LoadString(path:String) {
        var stringLoader:URLLoader = new URLLoader(new URLRequest(path));
        stringLoader.addEventListener(LoaderEvent.COMPLETE, loadStringComplete);
        stringLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpError,false,0,true);
        stringLoader.addEventListener(IOErrorEvent.IO_ERROR, error, false, 0 ,true);
}

private function loadStringComplete(e:Event) {
        try {
            dispatchEvent(new LoaderEvent(LoaderEvent.STRING_LOADED,0,0,e.target.data,true));
        } catch (error:*) {
            dispatchEvent(new LoaderEvent(LoaderEvent.ERROR,0,0,"Error: "+ error.toString(),true));
        }
}
于 2012-08-03T12:22:29.977 に答える