2009-11-03 83 views
0

我正在使用Tab Navigator組件,其中有三個畫布組件。當我點擊其中一個畫布(或標籤)時,會顯示一個餅圖。Flex:刷新TabNavigator的特定選項卡?

實際上發生的事情是,在點擊
1.在畫布上發送的HTTPService其URL設置爲一個PHP文件
2.在PHP文件實際上是從數據庫中獲取信息。基於創建
3.融合圖表的XML文件,該文件的信息使用該XML文件來顯示餅圖

問題:
該數據庫被一段時間後進行更新。

是否有任何方法可以在每3分鐘後更新餅圖以反映數據庫中的修改?或

我可以每隔3分鐘在背景中一次又一次發送特定的HTTPService嗎?或

是否有任何更好的方式來更新Tab Navigator的特定畫布(或選項卡)中的信息?

非常感謝。 :)

更新:
現在要設置一個計時器在我的應用程序,但我得到以下對第2和第3行錯誤:

第2行錯誤:
多個標記:
-1120訪問未定義的屬性Countsec
-1120訪問未定義屬性mTimer
第3行錯誤:
01未定義的屬性次訪問mTimer

但如代碼如下所示我已經定義了一切:

var mTimer:Timer=new Timer(1000*60*3); //3 minutes 
mTimer.addEventListener(TimerEvent.TIMER,Countsec); 
mTimer.start(); 
private function Countsec(e:TimerEvent):void 
{ 
charts.send(); //HTTPService's ID that needs to be sent 
} 

回答

1

以下行需要在一個函數調用,而不僅僅是在腳本中聲明:

mTimer.addEventListener(TimerEvent.TIMER,Countsec); 
mTimer.start(); 

你或許應該叫他們在初始化或creationComplete事件的功能。

0

有基本上有兩種更新,你可以做的:基於定時器或基於事件。

如果您想要執行基於計時器的操作,只需在應用程序啓動時設置timer即可定期運行更新。

如果你想做基於事件的事情,你可以設置合適的UI事件處理程序來更新內容。

要訪問標籤Navigator選項卡的內容,您使用

yourTabNavigator.getChildAt(index) 

其中index爲你要訪問的標籤的基於0的索引。然後您可以添加,刪除,更改其內容對象。

另外,如果你硬編碼你的標籤,你可以給每個內容對象一個ID,並直接通過ID訪問它們。

<mx:TabNavigator id="tn" width="100%" height="100%"> 
     <!-- Define each panel using a VBox container. --> 

     <mx:VBox label="Panel 1" id="box1"> 
      <mx:Label text="TabNavigator container panel 1"/> 
     </mx:VBox> 

     <mx:VBox label="Panel 2" id="box2"> 
      <mx:Label text="TabNavigator container panel 2"/> 
     </mx:VBox> 

     <mx:VBox label="Panel 3" id="box3"> 
      <mx:Label text="TabNavigator container panel 3"/> 
     </mx:VBox> 
    </mx:TabNavigator> 

然後,您可以訪問他們爲「盒1」等

+0

感謝Jaanus的回覆。我的東西Timer會爲我做魔術。但是我在使用Timer時面臨奇怪的錯誤。我更新了我的問題。如果你找到一些時間,請看看它。 :) – baltoro 2009-11-03 15:47:06

+0

代碼看起來正確。我能想到的唯一的事情就是你的Countsec函數包含一些錯誤,因此整個事情就會崩潰。先嚐試調試Countsec函數,註釋掉所有內容,然後從函數中追蹤一些東西。如果這樣做,你可以把更復雜的東西放回去。還要確保你有所有需要的進口。 – Jaanus 2009-11-03 17:50:29

0

試着改變你的「Countsec」功能,而不是公衆的私人。

此外,您可以在計時器長度(1000 * 60 * 3,0)之後爲重複計數添加參數。 0是無限的,或將其設置爲特定的計數。

你可以做的最後一件事是直接調用常量而不是TimerEvent.TIMER。使用「計時器」代替。 「mTimer.addEventListener(」 計時器 「Countsec);」

相關問題