Flex - странное поведение при отображении большого количества Canvas - PullRequest
0 голосов
/ 10 мая 2010

У меня есть приложение Flex (SDK 3.5 - FP10), которое создает деревья mindmap. Каждый узел - это Canvas (я использую определенные свойства Canvas, поэтому он мне нужен). Он имеет эффект тени, цвет фона и небольшой элемент пользовательского интерфейса (например, значки, тексты ...). Он работает отлично, пока не пройдет ~ 700 узлов (Canvas). За этим числом он показывает серые прямоугольники. Если я отключу эффект DropShadowFilter для Canvas, они также исчезнут, поэтому я предполагаю, что это проблема DropShadowFilter.

Эффект прост:

private static var _nodeDropShadow:DropShadowFilter = new DropShadowFilter(1, 45, 0x888888, 1, 1, 1);

_backgroundComp.filters = _nodeDropShadow;

Возможно ли, что Флекс не может так много справиться?

Ответы [ 2 ]

0 голосов
/ 11 мая 2010

Да, 700 - это немного для компонентов Flex. На этом уровне вам нужно написать свои собственные компоненты, которые рисуют и размечают вручную. Также я согласен с использованием bitmapCaching, чтобы гарантировать, что фильтры теней не будут постоянно перерисовываться.

0 голосов
/ 10 мая 2010

Я думаю, что вы абсолютно правы, flex не может справиться с таким количеством фильтров падающих теней. Они очень дорогие. Однако, если вы используете встроенные скины, они создают растровые версии drophadows, которые требуют меньше ресурсов процессора. Вы захотите установить для стиля "dropShadowEnabled" значение true, чтобы включить этот эффект. Вы будете меньше контролировать этот тип dropShadow, но, возможно, сможете заставить его делать то, что вы хотите.

Чтобы узнать больше о стилях drophadow, прочитайте список стилей mx: Canvas здесь: http://livedocs.adobe.com/flex/3/langref/mx/containers/Canvas.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...