kutuzov
21.02.2008, 12:30
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
private function onSelectedView(e:Event):void{
WipeU.end();
WipeD.end();
MoveF.end();
var index:int = main.getChildIndex(e.target as DisplayObject);
var mc:DisplayObject = this["box"+e.target.id];
if (e.currentTarget.selected) {
main.addChildAt(mc, index+1);
} else {
main.removeChild(mc);
}
}
]]>
</mx:Script>
<mx:WipeDown id="WipeD"/>
<mx:WipeUp id="WipeU"/>
<mx:Move id="MoveF"/>
<mx:VBox id="main" width="100%" height="100%" verticalGap="0">
<mx:CheckBox id="Peoples" label="qwe" selected="true" click="onSelectedView(event)"/>
<mx:VBox id="boxPeoples" paddingLeft="20" verticalGap="0" addedEffect="{WipeD}" removedEffect="{WipeU}">
<mx:CheckBox label="qwe1"/>
<mx:CheckBox label="qwe2"/>
<mx:CheckBox label="qwe3"/>
</mx:VBox>
<mx:CheckBox label="Projects" moveEffect="{MoveF}"/>
<mx:VBox id="boxProjects" paddingLeft="20" verticalGap="0" moveEffect="{MoveF}" addedEffect="{WipeD}" removedEffect="{WipeU}">
<mx:CheckBox label="asd1"/>
<mx:CheckBox label="asd2"/>
<mx:CheckBox label="asd3"/>
</mx:VBox>
</mx:VBox>
</mx:Application>
пример необходимо выполнить в as коде, сделал все кроме эффектов.
вопросы:
- как реализовать addedEffect="{WipeD}", разумеется что с помощью addEventListener(Event.ADDED, ...), но если создавать эффекты динамически то мне не понятно как к ним обратиться, именно к тому который записан на данный vbox, так как параметра name у WideDown и других нету;
- если писать программно то при removed, flex полностью удаляет vbox, и вернуть его уже нельзя, а если писать в mxml то можно. Это нужно для того чтоб нижние пункты поднимались вверх, если есть другой способ - сообщите.
может я не там копаю?
может есть простой способ типа WipeD.addTarget(boxPeoples), но тогда не ясно как добавить такой эффект именно на ADDED ?
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
private function onSelectedView(e:Event):void{
WipeU.end();
WipeD.end();
MoveF.end();
var index:int = main.getChildIndex(e.target as DisplayObject);
var mc:DisplayObject = this["box"+e.target.id];
if (e.currentTarget.selected) {
main.addChildAt(mc, index+1);
} else {
main.removeChild(mc);
}
}
]]>
</mx:Script>
<mx:WipeDown id="WipeD"/>
<mx:WipeUp id="WipeU"/>
<mx:Move id="MoveF"/>
<mx:VBox id="main" width="100%" height="100%" verticalGap="0">
<mx:CheckBox id="Peoples" label="qwe" selected="true" click="onSelectedView(event)"/>
<mx:VBox id="boxPeoples" paddingLeft="20" verticalGap="0" addedEffect="{WipeD}" removedEffect="{WipeU}">
<mx:CheckBox label="qwe1"/>
<mx:CheckBox label="qwe2"/>
<mx:CheckBox label="qwe3"/>
</mx:VBox>
<mx:CheckBox label="Projects" moveEffect="{MoveF}"/>
<mx:VBox id="boxProjects" paddingLeft="20" verticalGap="0" moveEffect="{MoveF}" addedEffect="{WipeD}" removedEffect="{WipeU}">
<mx:CheckBox label="asd1"/>
<mx:CheckBox label="asd2"/>
<mx:CheckBox label="asd3"/>
</mx:VBox>
</mx:VBox>
</mx:Application>
пример необходимо выполнить в as коде, сделал все кроме эффектов.
вопросы:
- как реализовать addedEffect="{WipeD}", разумеется что с помощью addEventListener(Event.ADDED, ...), но если создавать эффекты динамически то мне не понятно как к ним обратиться, именно к тому который записан на данный vbox, так как параметра name у WideDown и других нету;
- если писать программно то при removed, flex полностью удаляет vbox, и вернуть его уже нельзя, а если писать в mxml то можно. Это нужно для того чтоб нижние пункты поднимались вверх, если есть другой способ - сообщите.
может я не там копаю?
может есть простой способ типа WipeD.addTarget(boxPeoples), но тогда не ясно как добавить такой эффект именно на ADDED ?