Искровые эффекты: почему процедурный код предпочтительнее триггеров?
В Flex 3 эффекты MX могут запускаться так:
<mx:Resize id="myEffect" />
<mx:Button mouseDownEffect="{myEffect}" />
В Flex 4 эффекты Spark запускаются так:
protected function onClick(event:MouseEvent):void {
resizeEffect.end();
resizeEffect.play();
}
...
<s:Resize id="resize" />
...
<s:Button click="onClick(event)" />
Какова была причина использовать этот менее декларативный и более длительный подход? Я не мог найти ответ где-нибудь в документах.
(Две вещи, чтобы отметить:
- Могут быть небольшие различия между триггером mouseDown и событием click, пожалуйста, не обращайте на это внимания, это всего лишь пример.
- Я не уверен, будут ли триггеры работать надежно или нет для эффектов Spark. Возможно, они будут, но я думаю, что есть причина, почему эта возможность даже не упоминается в официальных документах.
)
2 ответа
Триггеры эффектов официально не поддерживаются в текущем выпуске. Вы можете отслеживать прогресс этой функции здесь: http://bugs.adobe.com/jira/browse/SDK-19743
Я добавлю, что кнопка Flex 4 по-прежнему имеет триггеры эффектов, задокументированные в ASDocs, включая mouseDownEffect. Вы уверены, что они не работают?
Тем не менее, за кулисами, в коде компонента, триггеры эффекта работают так же, как ваш второй пример. Какой-то код где-то получить эффект, если он существует, и вручную обработать эффект воспроизведения.
Поскольку Spark имеет полусгоревший набор компонентов, возможно, такие вещи еще не были реализованы. Также возможно, что эффект не передается вашему классу кнопок, который, я подозреваю, должен иметь дело с такими визуальными изменениями.
Возможно, вы должны предоставить нам несколько готовых образцов?