2009-11-03 61 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);”

相关问题