フラッシュ内の 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>