0

フラッシュ内の CalloutButtons とコンテナーに問題があります。スクロール可能なアイテムのリストを表示する吹き出しボタンを正常に作成しました。項目を選択すると、対応する画像がメイン ビューに表示されます。

しかし、何らかの理由で、2 つのコールアウトが表示されているようです。メニューを下にスクロールすると、1 つのインスタンスが閉じてデータを渡します (今回はまだデータが選択されていないため、これは以前に保存されたデータです)。 ...そして、実際に項目を選択すると、リストは閉じますが、closeHandler を再度呼び出しません。

問題は、calloutButton がクリックされたときに Flex が自動的に callout コンテナーを作成することです。これを無効にするにはどうすればよいですか?

それとも私のと交換...

ありがとう

編集 - これが私のコードです:

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>
4

1 に答える 1

1

コードをありがとう。2 つの Callout インスタンスの理由は、CalloutButtonプラスの別の を使用しているためCalloutです。CalloutButtonがあなたの独自のインスタンスを作成することを考えると、のデフォルトと自分で作成したもののCallout両方を持つことになります。CalloutButtonCallout

変更する必要があるのはPrimaryCallout、一般的な Button を使用するか (開く/閉じるアクションを自分で処理する必要があります)、代わりにCalloutButtonのデフォルトを使用することです。Callout

于 2012-09-20T07:40:40.867 に答える