У меня проблема с кнопками 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>