Проблема с выбором элемента списка контейнера выноски Flex - отключение автоматического всплывающего окна

У меня проблема с кнопками CalloutButtons и контейнерами во флэш-памяти. Я успешно создал кнопку выноски, которая вызывает прокручиваемый список элементов. Когда элемент выбран, соответствующее изображение должно появиться на главном экране.

Но по какой-то причине, кажется, появляются 2 выноски - и когда я прокручиваю меню вниз, один экземпляр закрывается и передает данные (это предыдущие сохраненные данные, потому что на этот раз данные еще не были выбраны). ... И когда я действительно выбираю элемент, список закрывается, но больше не вызывает closeHandler.

Проблема, похоже, в том, что Flex автоматически создает контейнер выноски при нажатии calloutButton. Как я могу это отключить?

Или замените его моим ...

Спасибо

Изменить - вот мой код:

PrimaryCallout.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Callout xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark"
           xmlns:weapons="services.weapons.*">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import assets.dataFiles.Loadout;
            import spark.events.IndexChangeEvent;

            protected function list_creationCompleteHandler(event:FlexEvent):void
            {
                getDataResult.token = weapons.getData();
            }

            protected function list_ChangeHandler(event:IndexChangeEvent):void
            {   
                close(false);
                Loadout.primaryImage    = list.selectedItem.ImgID;
                Loadout.primaryTitle    = list.selectedItem.WeapName;

            }

        ]]>
    </fx:Script>
    <fx:Declarations>
        <s:CallResponder id="getDataResult"/>
        <weapons:Weapons id="weapons"/>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

        <s:List id="list" width="240" height="100%" change="list_ChangeHandler(event)"
                creationComplete="list_creationCompleteHandler(event)"
                labelField="WeapName">
            <s:AsyncListView list="{getDataResult.lastResult}"/>
        </s:List>
</s:Callout>

LoadoutView.mxml

    <?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:weapons="services.weapons.*"
        xmlns:callouts="views.callouts.*"
        title="Loadout">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            import spark.events.DropDownEvent;

            import assets.dataFiles.Loadout;
            import views.callouts.PrimaryCallout;



            protected function calloutbutton1_openHandler(event:MouseEvent):void
            {
                var primaryCallout:PrimaryCallout = new PrimaryCallout();

                primaryCallout.open(primary, true);
            }


            protected function list_creationCompleteHandler(event:FlexEvent):void
            {
                getDataResult.token = weapons.getData();
                //weaponImage.source = "assets/weapons/{Loadout.primaryImage}";
            }

            protected function primary_closeHandler(event:DropDownEvent):void
            {
                //primary.label = Loadout.primaryTitle;
                weaponImage.source      = "assets/weapons/"+ (Loadout.primaryImage);

            }

        ]]>
    </fx:Script>
    <fx:Declarations>
        <s:CallResponder id="getDataResult"/>
        <weapons:Weapons id="weapons"/>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <s:Image x="0" y="0" width="100%" height="100%" scaleMode="stretch" smooth="true"
             source="assets/06iOS.jpg"/>
    <s:CalloutButton id="primary" x="10" y="10" height="56" label="Primary" fontStyle="normal"
                     fontWeight="normal" lineThrough="false"
                     click="calloutbutton1_openHandler(event)" textDecoration="none" close="primary_closeHandler(event)"/>
    <s:Image id="weaponImage" x="10" y="74" width="240" height="105"
             source="assets/weapons/{data.ImgID}"/>
</s:View>

person Tspoon    schedule 19.09.2012    source источник
comment
Честно говоря, я не могу понять. Не могли бы вы опубликовать такой код? Звучит странно, что два экземпляра выноски создаются одним щелчком CalloutButton. Я такого никогда не видел и пока довольно часто ими пользовался.   -  person AlBirdie    schedule 20.09.2012


Ответы (1)


Спасибо за код. Причина для ваших двух экземпляров Callout заключается в том, что вы используете CalloutButton плюс отдельный Callout. Учитывая, что CalloutButton создает свой собственный экземпляр Callout, вы получаете как CalloutButton по умолчанию Callout, так и тот, который вы создали сами.

Что вам нужно изменить, так это либо использовать свой PrimaryCallout с общей кнопкой (которая потребует от вас самостоятельно обрабатывать действия открытия / закрытия), либо вместо этого использовать CalloutButton по умолчанию Callout.

person AlBirdie    schedule 20.09.2012
comment
Просто изменил выноску по умолчанию с моими данными PrimaryCallout.mxml, и это сработало как шарм! Ваше здоровье! - person Tspoon; 20.09.2012