我的測試平臺能夠將1000個元素合成爲屏幕上的剪輯,但我無法從外部swf提取Starling或導出爲png 。難以從外部Flash SWF庫中的movieClip獲取位圖
(我有點代碼屠夫的,但都試過很多的變化,並通過spritesheet發生的例子已經看過))
我見過的建議:「你不能從一個類獲得的位圖數據只displayObjects(MClip,Sprite)「,我的行:s =新的AssetClass()似乎解決了這個問題。 Correct usage of addtoStage when loading external swf
我能夠產生一個內部矢量影片剪輯的位圖,並使用as3corelib.PNGEncoder.as其保存到.png文件,但我最終用夾子從外部SWF空白PNG,運行此在Flash Pro中CC ..
轉述代碼:
// SWF負載進行處理:
testBitmap = new Bitmap(new BitmapData(w, h , true, 0x0));
var AssetClass:Class = getDefinitionByName("assetNameFromDatabase") as Class;
var s:MovieClip = new AssetClass(); // AddChild(s) functions properly
var m:Matrix = new Matrix(1, 0, 0, 1, 400, 300);
testBitmap.bitmapData.draw(s, m);
// addChild(testBitmap); or send to PNGEncoder rsult is blank
// internal clip test that does convert to bitmap
var b:MovieClip = new testdMovieClip();
var m:Matrix = new Matrix(1, 0, 0, 1, 200, 300);
testBitmap.bitmapData.draw(b, m);
// ----------------- -----------
感謝Vesper,無法用你的建議修正一些事情,我實際上已經添加到一個movieClip中,只是將它從簡化的代碼示例中刪除,我嘗試了一些在繪製位圖之前添加實例的變量,仍然得到沒有結果。
// -
***修訂:看起來像庫已嵌入「顯示,但不復制」保護代碼?有人可以驗證這一點。
我正在使用以swf格式提供的合併的影片剪輯庫(我有個別fla源文件庫swfs中的數百個資源,我希望避免處理,它們從Flash Pro cc中刪除swf導入是進一步的agrrevation )這是退役遊戲的公共領域資料。
使用Trillix審判,我檢查了嵌入式類文件,與通常的個人資產類別沿着他們有這樣的代碼:
public override function get movieClipData():flash.utils.ByteArray
{
if (bytes == null)
{
bytes = flash.utils.ByteArray(new dataClass());
}
return bytes;
}
{
bytes = null;
}
internal static var bytes:flash.utils.ByteArray=null;
// the classes also have
import flash.utils.*;
import mx.core.*; // as well as embedded package mx files, is that for Flex?
我一直在尋找創造一些代碼較少的外部庫文件的空氣/ iOS下,我可能不得不學習如何自動合併FLA的時間早於後期。