我的测试台能够将一千个元素复合到屏幕上的剪辑中,但是我不能从外部SWF上即时提取刻薄的位图或导出到PNG。<</
(我有点像代码屠夫,但尝试了很多变化,并浏览了SpriteSheet生成示例))
我已经看到了"您无法从类别的displayObjects(mclip,sprite)&quot&quot&quot&quot&quot&quot&quot",我的行:s = s = new AssetClass()似乎解决了这一点。加载外部SWF
时,请更正使用addostage我能够生成一个内部矢量movieClip的位图,并使用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,您的建议无法gfix,我实际上已经添加到MovieClip中,只是将其排除在简化的代码示例之外,我确实尝试了一些在绘图之前添加一个实例的变体,没有结果。
// -
***修正案:看起来Libs已嵌入"显示",但不要复制"保护代码?有人可以验证这一点。
我正在使用以SWF格式提供的合并MovieClip库(我有单独的FLA来源,用于我希望避免处理的库中数百个资源,他们从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?
我正在考虑为Air/iOS创建一些无代码的外部库文件,我可能必须学会更早地自动合并FLA的方法。
我已经看到了形状/精灵对象的宽度和高度属性的怪异行为,而它们未添加到显示列表中,它们返回-1亿亿。因此,您应该添加,然后绘制,然后删除。当我写一个动态生成的精灵时,这个技巧对我有帮助。
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
addChild(s); // !
var m:Matrix = new Matrix(1, 0, 0, 1, 400, 300);
testBitmap.bitmapData.draw(s, m);
removeChild(s);
addChild(testBitmap); // now should display properly