我目前正在Flashbuilder 4.6中创建一个移动平板电脑应用程序,我使用一个带有viewnavigator的callout按钮创建了一个菜单结构。
我遇到的问题是我试图在此标注菜单中的一个视图上设置图像源值。下面的代码用于我的应用程序中的第一个视图,其中包含我想通过菜单选择更改的图像:
<?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" title="Main Page">
<s:layout>
<s:VerticalLayout paddingTop="15" paddingBottom="15" paddingLeft="15" paddingRight="15" gap="5"
horizontalAlign="center" verticalAlign="top"/>
</s:layout>
<s:Image id="Image" width="100%" height="100%" scaleMode="letterbox" smooth="true"
smoothingQuality="high" source="assets/Image1.png"/>
</s:View>
这是加载到应用程序中的第一个视图。然后下面的代码来自标注中包含的菜单之一,我试图将第一个视图中的图像源设置为等于新值,从而根据菜单选择更改主要内容:
<?xml version="1.0" encoding="utf-8"?>
<!-- components\mobile\views\main_menu.mxml -->
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
title="Menu" initialize="view1_initializeHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import spark.components.SplitViewNavigator;
import spark.components.ViewNavigator;
import spark.events.IndexChangeEvent;
import spark.events.ViewNavigatorEvent;
import views.CallOutPassBack;
import views.RightView;
public var myCallout:CallOutPassBack = new CallOutPassBack();
public var mainView:RightView = new RightView();
protected function list_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
trace("at this stage");
var currentDataItem:Object = event.currentTarget.selectedItem;
if( currentDataItem.view_id == "dk" ){
trace(mainView.Image.source.toString());
mainView.Image.source = "assets/Image_1.5.png";
}else if( currentDataItem.view_id == "dks" ){
mainView.Image.source = "assets/Image_2.png";
}else if( currentDataItem.view_id == "hes" ){
mainView.Image.source = "assets/Image_3.png";
}else if( currentDataItem.view_id == "slk" ){
mainView.Image.source = "assets/Image_4.png";
}
}
protected function view1_initializeHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub
trace("at this stage2");
}
protected function back_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
navigator.popView();
}
]]>
</fx:Script>
<s:actionContent>
<s:Button id="back" label="Back" emphasized="true" click="back_clickHandler(event)"/>
</s:actionContent>
<s:List id="list" width="425" height="100%" click="list_clickHandler(event)" labelField="name">
<s:dataProvider>
<s:ArrayCollection>
<fx:Object name="DK" view_id="dk"/>
<fx:Object name="DKS" view_id="dks"/>
<fx:Object name="HES" view_id="hes"/>
<fx:Object name="SLK" view_id="slk"/>
</s:ArrayCollection>
</s:dataProvider>
</s:List></s:View>
我还尝试在第一个视图上将值追踪到控制台以获取当前图像源,但是由于空值而导致错误输出。它不会让我更改真正令人讨厌的图像,因为我需要根据在标注中选择的菜单项加载第一个视图中的图像,任何想法?
如果有人可以告诉我如何甚至可以通过标注中的某种推送视图将第一次视图更改为新视图,我可以这样做,但我认为是理想的。
由于