我想在Flash/Flex中執行一個非常簡單的應用程序,該應用程序將嵌入swf本身的圖像加載並顯示出來。事情是我正在嘗試使用命令行(mxmlc和compc),而不使用@Embed,並且失敗悲慘。對Flex中SWC的「鏈接」
我有一個非常簡單的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 kb的Assets.swf中,比icon_big.png稍大。然後我嘗試編譯和鏈接Main.as:
mxmlc -include-libraries+=assets.swc Main.as
這將產生一個944字節的main.swf,這顯然不包括資產,並在運行時出現故障。
根據我發現的mxmlc文檔,-include-libraries應該鏈接到每個類,包括那些沒有被代碼直接引用的類(這裏就是這種情況,因爲我從代碼中獲取類),而且它毫不奇怪,在運行時失敗。
請注意,在Flash項目中使用相同的代碼(或者更確切地說相當等效的代碼) - 我不想修復代碼,但是無論Flash如何在內部執行命令行。
我覺得我只是「沒有得到」的東西......任何線索?
只是爲了檢查:您的'compc'命令說'assets.swf',但您的'mxmlc'命令引用'assets.swc'。我假設這是一個錯字? – 2010-03-09 21:33:52
是的。抱歉。我正在創建一個swc。我稱它爲swf並不重要,它仍然是一個swc。 – ggambett 2010-03-09 22:33:56