2012-03-07 181 views
2

我對actionscript3/flashbuilder非常新,我試圖做一些簡單的事情,比如將值從一個視圖傳遞到另一個視圖。將值從一個視圖傳遞到另一個視圖

我計算出我所有的語法錯誤,但我仍然得到一個NULL錯誤

(TypeError: Error #1009: Cannot access a property or method of a null object reference)

...即使我在測試的值硬編碼。

我有2個視圖,當我按下一個按鈕時,它應該將值傳遞給另一個視圖,然後在標籤中顯示傳遞的值。

這裏是我的2次:

廠景:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="view1"> 
    <fx:Script> 
     <![CDATA[ 
     var value1:int = 1; 
     var value2:int = 2; 
     ]]> 
    </fx:Script> 
    <s:Button id="btn1" x="5" y="10" width="25" label="Button 1" click="navigator.pushView(view2, {val:value1})"/> 
    <s:Button id="btn2" x="15" y="100" width="25" label="Button 2" click="navigator.pushView(view2, {val:value2})"/> 
</s:View> 

視圖2:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="view2"> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 

</fx:Declarations> 
<fx:Script> 
    <![CDATA[ 
     var passedValue:int = data.val; 
    ]]> 
</fx:Script> 
    <s:Label x="75" y="100" width="200" text="{passedValue}" /> 

任何幫助,將不勝感激!

謝謝!

回答

5

你的問題是你想在視圖完成創建之前訪問數據對象。

添加creationComplete處理函數,以您的觀點:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" title="view2" creatonComplete="init(event)"> 

而且你的init方法裏,你將能夠訪問數據對象

<fx:Script> 
<![CDATA[ 
    [Bindable] private var passedValue:int; 
    protected function init(e:FlexEvent):void{ 
     passedValue = data.val; 
    } 
]]> 
</fx:Script> 

另外,請注意我說[綁定]到您的passedValue var。 這是因爲你打算將它的價值綁定到你的標籤上。爲了這個工作,你需要使用[Bindable]你的變種

+0

偉大的建議...我將上述添加到我的項目。但是它不能識別init函數中的e:FlexEvent。它說類型沒有找到....謝謝! – SkyeBoniwell 2012-03-08 14:04:42

+0

沒關係...我需要添加'import mx.events.FlexEvent;' – SkyeBoniwell 2012-03-08 14:32:08

相關問題