Мы пытаемся это сделать:Свойства эффекта связывания внутри тегов эффекта не работают?
<rollOverEffect>
<AnimateProperty property="scaleX" toValue="{originalWidth + scaleFactor}" />
</rollOverEffect>
Тем не менее, кажется, что эффекты toValue всегда NaN. Если я задаю значение константе, эффект будет действовать. Невозможно использовать привязку данных для таких эффектов?
Добавление: Оба originalWidth и scaleFactor является Привязываемое. Мне удалось получить эту работу, перемещая эффект из rollOverEffect-тега, придав ему и идентификатор, а затем привязки к нему так:
<AnimateProperty id="scaleEffect" property="scaleX" toValue="{originalWidth + scaleFactor}" />
<MyComponent rollOverEffect="{scaleEffect}" />
Любая идея, почему это работает и бывший код не делает? Последний фрагмент создает вторую, необработанную привязку и не читается, но, по крайней мере, она работает.
Добавление: Следующий код указывает на проблему. Независимо от того, что установлен слайдер, значение свойства angleTo для эффектов всегда будет установлено на значение, заданное начальным значением ползунка.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:VBox horizontalCenter="0" verticalCenter="0">
<mx:Label text="Rotation (mouse over on canvas triggers effect):" />
<mx:HSlider id="slider" width="200" minimum="0" maximum="360" value="90" />
<mx:Spacer height="50" />
<mx:Canvas borderStyle="solid" borderThickness="1" borderColor="#ff0000" backgroundColor="#0000ff" width="200" height="200">
<mx:rollOverEffect>
<mx:Rotate angleTo="{slider.value}" duration="500" />
</mx:rollOverEffect>
<mx:rollOutEffect>
<mx:Rotate angleTo="{-slider.value}" duration="500" />
</mx:rollOutEffect>
</mx:Canvas>
</mx:VBox>
</mx:Application>
Сравнит со следующим кодом, который на самом деле производит ожидаемый результат:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Rotate id="rollOver" angleTo="{slider.value}" duration="500" />
<mx:Rotate id="rollOut" angleTo="{-slider.value}" duration="500" />
<mx:VBox horizontalCenter="0" verticalCenter="0">
<mx:Label text="Rotation (mouse over on canvas triggers effect):" />
<mx:HSlider id="slider" width="200" minimum="0" maximum="360" value="90" />
<mx:Spacer height="50" />
<mx:Canvas rollOverEffect="{rollOver}" rollOutEffect="{rollOut}" borderStyle="solid" borderThickness="1" borderColor="#ff0000" backgroundColor="#0000ff" width="200" height="200" />
</mx:VBox>
</mx:Application>
Итак, по существу, что вопрос, почему не связывание работы в первом примере? Нет никаких ошибок или предупреждений, чтобы сказать вам это, и я не могу найти что-либо в документации об этом, может быть, это ошибка?
Да, извините. И originalWidth, и scaleFactor являются связываемыми. –
Можете ли вы собрать очень маленький фрагмент кода, который демонстрирует вашу проблему? – dirkgently
К сожалению, мне придется бежать из офиса сейчас, но завтра я создам небольшое демо-приложение, которое освещает проблему. –