微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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(我没有使用它的经验,所以我不能说是否确实适合您)或使用视频。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。