Flex:如何使加载的swf变平,然后应用alpha,而不是先应用alpha然后变平。

| 我有一个flex应用程序,正在尝试在Google地图上显示一些动画矢量形状。为此,我加载了一个外部SWF(内容是动态的,因此我必须在运行时加载,并且SWF是唯一支持动画AFAIK的可加载格式),然后使用叠加层将其放置在地图上。 然后,我需要控制SWF的Alpha。设置起来很简单,但是由于某种原因,alpha似乎会应用于SWF内部的子形状,只有在此之后,图像才会合成到地图上。这使得位于绿色斑点上方的黄色斑点显示为黄绿色,而不仅仅是黄色。 我需要以某种方式告诉flex / flash“渲染/展平SWF,然后应用Alpha”,而不是“将Alpha应用于各个子形状,然后展平至地图”。理想情况下无需通过BitmapData对象或类似对象。 包含层次结构为Map-> BlobManager-> Loader-> Loader.content(SWF),我尝试将Alpha分别应用于BlobManager,Loader和Loader.content,但没有区别。我已经在较低的层上尝试过cacheAsBitmap,然后将Alpha设置为较高,直到无济于事。 对接下来要尝试的内容有什么建议吗?谢谢!     
已邀请:
尝试BlendMode.LAYER,它挽救了许多生命。     
我认为如果不在位图上绘制加载的内容并使用它与alpha一起显示,就无法做到这一点。 尽管这很容易,但是如果加载的内容是来自另一个域的,并且可能不允许您从该域创建bitmapData,则可能会遇到安全冲突。
// content is the loaded external swf, or the Loader itself?
var bitmapData:BitmapData = new BitmapData(content.width, content.height);
bitmapData.draw(content);
var bitmap:Bitmap = new Bitmap(bitmapData);
bitmap.alpha = .5;
addChild(bitmap);
甚至没有必要显示加载的内容(尽管我还没有尝试过),并且您也可以仅使用矩阵将其中的一部分用作bitmapData。 编辑:对于动画,另一种选择是按如下所述加载动画gif:http://www.bytearray.org/?p=95(我没有使用它的经验,所以我不能说是否确实适合您)或使用视频。     

要回复问题请先登录注册