Инициирование переменной Embed со строкой ... переменная не существует? - PullRequest
0 голосов
/ 30 мая 2011

В моем файле Actionscript у меня есть это:

[Embed(source="assets/disk.png")]
protected static const Disk:Class;

если я попытаюсь создать класс со следующим:

var ClassReference:Class = getDefinitionByName("Disk") as Class;

Я получаю сообщение об ошибке, что «Диск» не существует. Есть ли способ инициировать класс Disk по имени, чтобы он создавал новый экземпляр этого класса с помощью строки?

Имеет ли это смысл?

Ответы [ 2 ]

0 голосов
/ 30 мая 2011

Близко, но вам нужно немного подправить, например:

var str:String = "MyObject";

var Shell:Class = getDefinitionByName(str) as Class;
var myobj:DisplayObject = new Shell();

addChild(myobj);

На что обратить внимание, эта строка:

var myobj:DisplayObject = new Shell();

Вы должны заменить DisplayObject на самый примитивный тип, который вы можете (я обычно использую свой собственный базовый класс).

Другие примечания:

Вам понадобится полный путь к пакету при использовании getDefinitionByName. например:

getDefinitionByName("flash.display.MovieClip");

Если вы столкнетесь с такими ошибками:

ReferenceError: Error #1065: Variable MyObject is not defined.

Возможно, вам понадобится сделать ссылку на классы, которые могут быть созданы следующим образом:

var ref1:Disk;
var ref2:Other;
var ref3:MyObject;
0 голосов
/ 30 мая 2011

Просто возьмите Disk - это класс, и его можно создать:

var diskInstance:ByteArray = new Disk();

(это будет ByteArrayAsset, потому что тип MIME не указан в Embed.)
Embed сгенерирует класс с длинным непонятным именем, вы не можете получить его без разбора swf, поэтому используйте вместо этого Disk const.
Обновление
Как я понимаю, вы хотите встроить ресурс и дать ему конкретное имя класса. AFAIK, это невозможно. Вы можете создать класс Disk самостоятельно и поместить Embed внутрь:

public class Disk {
    [Embed(source="assets/disk.png")]
    public static const content:Class;
}

Затем вы можете получить класс Disk по имени и использовать свойство content для создания экземпляра.

...