Я пытаюсь сделать очень простое приложение во Flash / Flex, которое загружает изображение, встроенное в сам swf, а затем показывает его. Дело в том, что я пытаюсь сделать это, используя только командную строку (mxmlc и compc), без использования @Embed и с треском проваливаясь.
У меня очень простой Main.as:
package
{
import flash.display.*;
import flash.utils.*;
public class Main extends Sprite
{
public function Main () : void
{
var pDef:Class = getDefinitionByName("icon_big.png") as Class;
var _image:BitmapData = new pDef(0, 0);
var pSprite:Sprite = new Sprite();
pSprite.graphics.beginBitmapFill(_image);
pSprite.graphics.drawRect(0, 0, _image.width, _image.height);
pSprite.graphics.endFill();
addChild(pSprite);
}
}
}
Это прекрасно работает, если я добавляю icon_big.png в библиотеку с помощью Flash IDE, но я не могу понять, как это сделать из командной строки.
Я использую compc, чтобы поместить png в swc:
compc --include-file icon_big.png icon_big.png -output assets.swc
Это генерирует 17 КБ assets.swf, немного больше, чем icon_big.png. Затем я пытаюсь скомпилировать и связать Main.as:
mxmlc -include-libraries+=assets.swc Main.as
В результате получается файл Main.swf размером 944 байта, который явно не содержит актив и завершается с ошибкой во время выполнения.
Согласно документам mxmlc, которые я нашел, -include-library должна связываться с каждым классом, включая те, на которые нет прямой ссылки в коде (как здесь, так как я получаю класс из кода), и это неудивительно дает сбой во время выполнения.
Обратите внимание, что этот же код (или, точнее, вполне эквивалентный код) работает при использовании в проекте Flash - я не пытаюсь исправить код, а пытаюсь сделать в командной строке все, что Flash делает внутри.
Я чувствую, что просто "не понимаю" что-то ... какие-то подсказки?