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

Flex:将未实现的UIComponent渲染为BitmapData?

渲染到尚未添加到舞台的UIComponent的最佳方法是什么? (我使用uicomponents作为对象的渲染器,并希望为图像导出,过滤等渲染新副本)

到目前为止我见过/使用过的两种策略包括实现组件以确保它调用所有生命周期方法

>将组件添加到Application.application,使用BitmapData.draw()渲染,删除组件.这与我在打印未实现的组件时所做的类似.
>将组件添加到弹出窗口,在渲染完成后关闭弹出窗口.

我相信这两个都只是依赖于当前线程/事件正在执行时不刷新的UI,尽管(1)也可能依赖于在视图外实现的组件.

有没有更好的办法?

解决方法

我过去使用的成功案例如下:

>创建组件的新实例
>为FlexEvent.CREATION_COMPLETE添加事件侦听器
>在组件上设置visible = false
>将组件添加为主Application的子项
>创建组件时,将调用事件侦听器函数.应该从事件侦听器函数中放入/调用其余逻辑
>删除在步骤#2中添加的事件侦听器.
>使用ImageSnapshot.captureImage()或captureBitmapData()捕获组件的可视表示形式.
>从主应用程序中删除组件
>根据需要处理图像数据.

我用它来快照各种Flex图表组件,以便在服务器端生成的PDF中使用.获取BitmapData后,我使用PNGEncoder或JPEGEncoder类压缩数据,然后在上传到服务器之前在Base64中对其进行编码.

原文地址:https://www.jb51.cc/flex/174364.html

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

相关推荐