Я делаю мобильное приложение в Flash Builder 4.5 для Android и iOS и использую классы itemRenderer и iconitemrenderer для составления списка опций для моего приложения.По какой-то причине я не могу сделать их кликабельными или определить действия, которые нужно выполнять при каждом нажатии.По сути, я стремлюсь использовать «представления» FB, а при нажатии на элемент переключаться на новый вид.Вот код, с которым я работаю:
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:ms="libs/MessageBox-digitalRetro">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:actionContent>
<s:Button id="signin" label="Sign in" click="onSignIn(event)"/>
</s:actionContent>
//code for the clicking of the sign in button
<fx:Script>
<![CDATA[
protected function onSignIn(event:Event):void
{
}
]]>
</fx:Script>
<s:List height="100%" width="100%">
<s:itemRenderer>
<fx:Component>
<s:IconItemRenderer height="100" labelField="name"
iconField="photo" iconHeight="80"
iconWidth="80" messageFunction="getMessage">
<fx:Script>
<![CDATA[
import spark.components.NavigatorContent;
//this first method works
protected function getMessage(o:Object):String
{
return o.message;
}
]]>
</fx:Script>
</s:IconItemRenderer>
</fx:Component>
</s:itemRenderer>
<s:dataProvider>
<s:ArrayCollection>
<fx:Object name="Projects" photo="@Embed('libs/ProjectsIcon2.png')" message="Learn more about what we're working on" clickfn="views/Projects"/>
<fx:Object name="Locate Office" photo="@Embed('libs/google-maps-icon.png')" message="Find directions to our nearest office" clickfn=""/>
<fx:Object name="Contact Us" photo="@Embed('libs/gmailicon.png')" message="Let us know your thoughts!" clickfn=""/>
<fx:Object name="About Us" photo="@Embed('libs/info-icon.png')" message="" clickfn=""/>
</s:ArrayCollection>
</s:dataProvider>
<s:change>
<![CDATA[
// NEW!!!
var ClassReference:Class = getDefinitionByName(event.currentTarget.selectedItem.clickfn) as Class;
navigator.pushView(ClassReference);
]]>
</s:change>
</s:List>
</s:View>
РЕДАКТИРОВАТЬ: я добавил тэг "change", и теперь он компилируется, но я получаю сообщение об ошибке:
ReferenceError: Error #1065: Переменные проекты не определены.в global / flash.utils :: getDefinitionByName () в представлениях :: MainHomeView / ___ MainHomeView_List1_change () [C: \ Users \ jlehenbauer \ Adobe Flash Builder 4.5 \ Metters Inc \ src \ views \ MainHomeView.mxml: 56] в flash.events:: EventDispatcher / dispatchEventFunction () в flash.events::EventDispatcher/dispatchEvent () в mx.core :: UIComponent / dispatchEvent () [E: \ dev \ 4.5.1 \ frameworks \ projects \ framework \ src \ mx \ core\ UIComponent.as: 13128] на spark.components :: List / commitSelection () [E: \ dev \ 4.5.1 \ frameworks \ projects \ spark \ src \ spark \ components \ List.as: 1205] на spark.components.supportClasses :: ListBase / commitProperties () [E: \ dev \ 4.5.1 \ frameworks \ projects \ spark \ src \ spark \ components \ supportClasses \ ListBase.as: 939] в spark.components :: List / commitProperties ()[E: \ dev \ 4.5.1 \ frameworks \ projects \ spark \ src \ spark \ components \ List.as: 1069] в mx.core :: UIComponent / validateProperties () [E: \ dev \ 4.5.1 \ frameworks\ projects \ framework \ src \ mx \ core \ UIComponent.as: 8209] в mx.managers :: LayoutManager / validateProperties () [E: \ dev \ 4.5.1 \ frameworks \проекты \ framework \ src \ mx \ Manager \ LayoutManager.as: 597] в mx.managers :: LayoutManager / doPhasedInstantiation () [E: \ dev \ 4.5.1 \ frameworks \ projects \ framework \ src \ mx \ Manager \ LayoutManager.as: 813] в mx.managers :: LayoutManager / doPhasedInstantiationCallback () [E: \ dev \ 4.5.1 \ frameworks \ projects \ framework \ src \ mx \ Manager \ LayoutManager.as: 1180]