Flex实现在ViewStack中的滚动新闻实时刷新(下)!
来源:互联网 发布:php从入门到精通怎么样 编辑:程序博客网 时间:2024/06/04 17:47
第一、为了解决在滚动过程中刷新数据的问题,发现了Move组件的tweenEnd事件(当补间效果结束时分派),只要在此事件中完成数据刷新动作,即可满足要求,修改代码如下:
<!-- 脚本-->
<mx:Script>
<![CDATA[
//监听 Move 结束动作 判定是否需要更新
internal function listener2Refresh(event:TweenEvent):void {
var myEvent:MyTweenRefreshEvent2 = new MyTweenRefreshEvent2(this.refreshData,MyTweenRefreshEvent2.TWEEN_REFRESH_EVENT); //自定义事件 其作用将在之后讲解
if(this.refreshData==true){
TMService.send(); //HttpServie完成前后端数据的交互
myEvent.doRefresh=true;
// Alert.show("Refresh After Scroll End!");
}
else{
myEvent.doRefresh=false;
// Alert.show("No Refresh!");
}
this.dispatchEvent(myEvent); //自定义事件加到事件流
}
]]>
</mx:Script>
<mx:Move id="move_up" target="{AbfltDG}" tweenEnd="listener2Refresh(event)"/>
第二、把本新闻滚动效果页,作为自定义控件放入到ViewStack组件中,如何才能触发新闻滚动控件中滚动结束的事件呢?
答案就是完成一个自定义事件!
1.自定义事件之MyTweenRefreshEvent.as
public class MyTweenRefreshEvent extends Event
{
public var doRefresh:Boolean=false;
public static const TWEEN_REFRESH_EVENT:String="TweenRefreshEvent"; //使用常量定义事件的触发方式名称
public function MyTweenRefreshEvent(doRefresh:Boolean,type:String)
{
super(type, false, false);
this.doRefresh=doRefresh;
}
}
2.在自定义组件中封装该事件
<!--自定义事件-->
<mx:Metadata>
//声明事件注册通道的方法。name是事件对应的名称,也就是type。name一定要和事件类中的名称一致
[Event(name="TweenRefreshEvent", type="sim.monitor.asobj.MyTweenRefreshEvent2")]
</mx:Metadata>
3.之后就是在Move的tweenEnd中 分派自定义事件了,见“第一”中的代码
4.最后就是在ViewStack中的自定义控件中调用自定义事件了。
<!--页面组件-->
<mx:ViewStack x="0" y="0" id="myVS" horizontalCenter="0" width="1024" height="768" creationCompleteEffect="{myWR}">
<ns1:SimMonitorFirstLevel1 hideEffect="{myWD}" showEffect="{myWU}" id="partA">
</ns1:SimMonitorFirstLevel1>
<ns1:SimMonitorFirstLevel2 hideEffect="{myWD}" showEffect="{myWU}" id="partB" TweenRefreshEvent="partBRefreshData(event)">
</ns1:SimMonitorFirstLevel2>
</mx:ViewStack>
<!--脚本-->
<mx:Script>
<![CDATA[
import flash.events.KeyboardEvent;
import sim.monitor.asobj.MyTweenRefreshEvent2;
private var timer:Timer; //定时器
private var partAinterval:Number=5; //页面A刷新间隔 5分钟
private var partBinterval:Number=3; //页面B刷新间隔 3分钟
private var partAElapsed:Number=0; //页面A逝去时间
private var partBElapsed:Number=0; //页面B逝去时间
//定时器操作
private function onTimer(evt:TimerEvent):void {
partAElapsed++;
partBElapsed++;
if(myVS.selectedIndex==0&&partAElapsed>=partAinterval){ //当前显示页为A 且刷新时间大于A页设置间隔
partA.serviceCall();
partAElapsed=0; //刷新数据后复位
}
if(myVS.selectedIndex==1&&partBElapsed>=partBinterval){ //当前显示页为B 且刷新时间大于B页设置间隔
partB.refreshData=true;
// partBElapsed=0; //刷新数据后复位
}
}
//PartB DataGrid滚动结束后 刷新数据
private function partBRefreshData(event:MyTweenRefreshEvent2):void{
if(event.doRefresh==true){
partB.refreshData=false;
partBElapsed=0; //刷新数据后复位
}
}
]]>
</mx:Script>
这样就可以结合ViewStack的显示,来优化是否刷新当前滚动新闻页的数据了。
PS:本例中完成后,自定义事件的调用顺序是先调用自定义控件的listener2Refresh方法,之后再回到外部调用的partBRefreshData函数中!切记此事件执行顺序!
- Flex实现在ViewStack中的滚动新闻实时刷新(下)!
- Flex实现在ViewStack中的滚动新闻实时刷新(上)!
- Flex中的ViewStack
- flex 使用viewstack实现页面的跳转
- flex 在viewstack里使用AdvancedDataGrid,出现错误解决办法
- flex 使用viewstack实现页面的跳转(转)
- flex 使用viewstack实现页面的跳转(转)
- Flex ViewStack页面跳转
- Javascript实现滚动新闻
- html 实现滚动新闻
- jquery实现新闻滚动
- 实现自己的CCTabelview滚动刷新和下啦刷新
- Flex ViewStack 页面间传递参数 刷新页面 重新初始化页面
- ajax实现实时刷新
- gulp 实现实时刷新
- gulp 实现实时刷新
- Flex ViewStack高度异常问题
- 先下滚动新闻条
- 关于一些立体视觉的总结
- The Linux Page Cache and pdflush:Theory of Operation and Tuning for Write-Heavy Loads
- 生日,让自己有一个新的开始
- 读书-Linux内核设计与实现 一
- UDP通讯方式及编程实现步骤
- Flex实现在ViewStack中的滚动新闻实时刷新(下)!
- 从Wi-Fi事件看无线网络的安全性
- 择业忌讳没有职业目标
- 大学生求职面试最忌讳的话
- Grassland fire kills 22 in Southwest China(中国西南草原大火致22人死亡)
- 带icon的textview
- SQLServer CPU占用100%
- TestDirector8.0的license
- [Android]解决Window系统adb shell后中文显示乱码