автозапуск приложения в flex

Я нашел приложение, которое считывает информацию о вашей веб-камере. Дело в том, что при запуске приложения вам нужно нажать на него, чтобы просмотреть свою статистику.

Теперь я подключил приложение к кнопке, которая анимирует mx:list, который я создал, но в любом случае мне нужно щелкнуть кулаком по списку, чтобы сгенерировать вывод на mx:label.

Любые идеи, как мне сделать, чтобы просто нажать кнопку «Показать», чтобы автоматически запустить статистику камеры.

Спасибо

<?xml version="1.0"?>
<!-- behaviors\CompositeEffects.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script>
        <![CDATA[
                import mx.events.ListEvent;
                import mx.utils.ObjectUtil;


            private var camera:Camera;
                private function list_change(evt:ListEvent):void {
                var tList:List = evt.currentTarget as List;
                var cameraName:String = tList.selectedIndex.toString();
                camera = Camera.getCamera(cameraName);
                textArea.text = ObjectUtil.toString(camera);
            }
    ]]>
    </mx:Script>

    <mx:Parallel id="ZoomRotateShow">
        <mx:Zoom id="myZoomShow" 
                 zoomHeightFrom="0.0" 
                 zoomWidthFrom="0.0" 
                 zoomHeightTo="1.0" 
                 zoomWidthTo="1.0"
                 />
        <mx:Rotate id="myRotateShow"/>
    </mx:Parallel>

    <mx:Sequence id="ZoomRotateHide">
        <mx:Rotate id="myRotateHide"/>
        <mx:Zoom id="myZoomHide" 
                 zoomHeightFrom="1.0" 
                 zoomWidthFrom="1.0" 
                 zoomHeightTo="0.0" 
                 zoomWidthTo="0.0"
                 />
    </mx:Sequence>



        <mx:List id="list"
                 dataProvider="{Camera.names}"
                 width="200"
                 change="list_change(event);"
                 hideEffect="{ZoomRotateHide}" 
                 showEffect="{ZoomRotateShow}" visible="false"
                 />

    <mx:Label id="textArea" height="185" x="674" y="228" dataChange="{Camera.names}" />

    <mx:Button id="myButton1" 
               label="Show!" 
               click="list.visible=true;"
               />
    <mx:Button id="myButton2" 
               label="Hide!" 
               click="list.visible=false;"
               />
</mx:Application>

person Dymond    schedule 18.03.2012    source источник


Ответы (1)


Во-первых, я разделил вашу функцию на две части:

private function list_change(evt:ListEvent):void {
    var tList:List = evt.currentTarget as List;
    populateCameraInfo(tList.selectedIndex.toString());
}
private function populateCameraInfo(cameraName:String):void {
    camera = Camera.getCamera(cameraName);
    textArea.text = ObjectUtil.toString(camera);
}

Далее (и я предполагаю, что вы хотите, чтобы список был виден для начала):

<mx:List id="list"
         dataProvider="{Camera.names}"
         width="200"
         change="list_change(event);"
         hideEffect="{ZoomRotateHide}" 
         showEffect="{ZoomRotateShow}"
         selectedIndex="0"
         creationComplete="populateCameraInfo('0')"
         />

Таким образом, всегда выбирается первый элемент.

person Manish    schedule 18.03.2012
comment
Ну, почти то, с чем мне нужна помощь :) Могу ли я что-нибудь еще, кроме информации из списка внутри этикетки? Поэтому, когда я нажимаю кнопку «Показать метку», помещается информация, которую генерирует список. Потому что я хочу, чтобы кнопка show отображала информацию. Спасибо - person Dymond; 19.03.2012
comment
@FelipeOtarola Вы не хотите, чтобы список был виден изначально? Затем вместо creationComplete сделайте это в show. - person Manish; 19.03.2012