我有一个Flex应用程序(SDK 3.5 - FP10),用于构建思维导图树。每个节点都是Canvas(我使用Canvas特定的属性,所以我需要它)。它有阴影效果,背景颜色和一些小的ui元素(如图标,文本......)。它可以完美运行,直到超过700个节点(Canvas)。在该数字上,它显示灰色矩形。如果我关闭Canvas的DropShadowFilter效果,它们也会消失,所以我认为这是一个DropShadowFilter问题。
效果很简单:
private static var _nodeDropShadow:DropShadowFilter = new DropShadowFilter(1, 45, 0x888888, 1, 1, 1);
_backgroundComp.filters = _nodeDropShadow;
Flex有可能无法处理那么多吗?
答案 0 :(得分:0)
我认为你是完全正确的,flex无法处理那么多的阴影滤镜。它们非常昂贵。但是,如果您正在使用内置皮肤,则会创建处理器密集程度较低的dropshadows的位图版本。您需要将样式“dropShadowEnabled”设置为true以启用此效果。你可以减少对这种类型的dropShadow的控制,但是你可以让它做你想做的事。
有关更多阴影样式,请在此处阅读mx:Canvas的样式列表:http://livedocs.adobe.com/flex/3/langref/mx/containers/Canvas.html
答案 1 :(得分:0)
是的,700对于Flex组件来说有点多。在这个级别,您将需要编写自己的自定义组件来完成绘图和工作。手动布局。此外,我同意使用bitmapCaching来确保不会不断地重新渲染阴影滤镜。