2009-10-17 3 views
1

Кто-нибудь знает, как оживить размер/положение дочерних элементов макета в Flex 4?Анимация дочерних элементов в Flex 4

Пример:

У меня есть список компонентов с пользовательского макета. Я хочу, когда я изменил положение дочерних элементов, я хочу, чтобы они оживили их перемещение на новые позиции.

ответ

1

В настоящее время нет встроенных способов и планов для создания анимированных макетов в Flex 4: /.

Что я сделал для этого, так это оживить настройку «setLayoutBoundsPosition» и «setLayoutBoundsSize» в макете. Поэтому вместо создания эффекта «Переместить» и «Изменение размера» для каждого элемента в макете, который фактически задал бы ширину и высоту явно, установите матрицу. Затем убедитесь, что макет снова не отменен (что произойдет, если вы установите ширину/высоту напрямую), или вы можете начать получать бесконечный цикл. Возможно, вам придется сделать некоторые трюки, чтобы заставить это работать правильно (у меня нет права работать с эффектами Spark, но это очень легко сделать с Tweener/Tweenmax, поскольку у них есть плагины и такие, которые используют «setActualSize "или" setLayoutBoundsSize "и т. д.).

Я использую TweenMax для анимации макетов, и у них есть несколько плагинов, чтобы сделать это легко. TweenMax заметно похож на 3 раза быстрее (20 кадров в секунду по сравнению с 7fps), чем Spark Effects, так что я бы пошел с этим. Это выглядит примерно так, в методе updateDisplayList вашего макета.

TweenMax.to(child, duration, {setLayoutBoundsPosition:{x:childX * i, y:childY * i}});

0

BUMP.

Так же, как вы бы нормально ...

public override function updateDisplayList(width:Number, height:Number) : void { 
    for (var i:uint = 0; i < target.numElements; i++) 
    { 
     var resizeElement:Resize = new Resize(target.getElementAt(i) as IVisualElement); 
     resizeElement.widthTo = 500; 
     resizeElement.play(); 
    } 
} 
Смежные вопросы