Внешний файл конфигурации в ActionScript 3 - PullRequest
3 голосов
/ 03 июля 2010

Мне нужно иметь возможность загружать внешние файлы конфигурации в мое гибкое приложение.Я читал, что это возможно с помощью встраивания, если mimeType установлен на application / octet-stream.

package learning {
    import org.flixel.*;
    public class PlayState extends FlxState {
        [Embed(source = "../../data/tiles.png")] private var _tiles:Class;
        [Embed(source = '../../data/map.txt', mimeType = "application/octet-stream")] private var ExternalMapData:Class;

        public var txt:FlxText;
        public var player:FlxSprite;

        override public function create():void {
            bgColor = 0xffaaaaaa;
            super.create();
        }

        override public function update():void {
            super.update();
        }
    }
}

Когда я компилирую это с использованием mxmlc, он успешно компилируется без ошибок.Когда я запускаю SWF, он загружает все меню Flixel и затем зависает.

Если я закомментирую строку [Embed(source = '../../data/map.txt', она компилируется и не зависает.

Почему это встраивание вызываетзаморозка?

Информация о версии для mxmlc:

Adobe Flex Compiler (mxmlc)
Version 4.0.0 build 14159

РЕДАКТИРОВАТЬ

Оказывается, ошибки отображались неправильно, но это то, что яЯ пытаюсь внедрить:

VerifyError: Error #1014: Class mx.core::ByteArrayAsset could not be found.

Google обнаруживает группу людей с такой же проблемой, но без видимого решения.

import mx.core.ByteArrayAsset; ByteArrayAsset

тоже не помогает.

Ответы [ 2 ]

8 голосов
/ 09 июля 2010

Aha!Оказывается, решение было очень простым - разделяемые библиотеки времени выполнения не были статически связаны с SWF, и путь к файлу во время выполнения не был задан должным образом.Решение простое:

Либо измените flex-config, указав

<static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>

, либо вручную передайте параметр в mxmlc

mxmlc -static-link-runtime-shared-libraries=true -debug=true Main.swf -- Main.as

3 голосов
/ 03 июля 2010

Я отвечу на этот вопрос своим ответом на другой вопрос:

[Embed(source = "ExampleText.txt", mimeType = "application/octet-stream")]
protected var AAAAAA:Class;

var tmp:ByteArray = new AAAAAA();
var result:String = tmp.readMultiByte(tmp.bytesAvailable, tmp.endian);
...