当前位置: 首页 > news >正文

[Flex][问题笔记]TextArea滚动条问题

用flex做即时通讯,收到的最新消息应该在最下面,但textArea的滚动条默认在最上方,不方便查看最新消息。
可以使用TextArea.verticalScrollPosition = TextArea.maxVerticalScrollPosition;定位到最下方,但实际实现时,总是不能滚动动最后,而是倒数第二个。
ActionScript3天地会有人遇到了和我一样的问题: 如何让垂直滚动条定位到最下面的位置
后来在群里问了一下,原因是数据源虽然更新了,但是组件还没有刷新,解决方法有两种:
一:validateNow(),在设verticalScrollPosition之前先调用一下这个函数,强制刷新组件。(有高手指点说,此方法虽然是某个组件调用,却会使整个UI全部刷新,致使CPU占用过大,不推荐。其实UIComponent的validateNow()其实它内部也使用timer和enterframe进行的,所以推荐下面的方法)
二:加一个时间延时,具体加多长时间延时就不好说了,不能让用户感觉到延时,而且保证组件已经刷新了,所以需要多次测试哦!
即然说到了加延时,那如何加延时呢,我总结了一下,目前我知道的有如下几个方法:
一:Timer
1  var timer : Timer  =   new  Timer(  100 1  );
2  timer.addEventListener( TimerEvent.TIMER_COMPLETE, func );
3  timer.start();
这个方法是从 http://www.k-zone.cn/的某一篇文章里提取出来的,不知道正不正规。
还有就是要注意垃圾回收,即在func里timer.stop();
二:setTimeout
我觉得这个方法其实是调用了一个工具方法。
flash.utils.setTimeout(function(): void {Alert.show( " only show once " );},  2000 null );
注意里面第一个参数必须是函数!个人认为这个比较好,多精简!
三:setInterval,可以重复
 1<?xml version="1.0" encoding="utf-8"?>
 2<mx:Application initialize="initTimter()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 3<mx:Script>
 4    <![CDATA[
 5    import mx.controls.Alert;
 6    public var count:Number=2//定义时间长度(秒)
 7    public var intervalId:Number;//定时器参数
 8    //定时器起动口
 9ExpandedBlockStart.gifContractedBlock.gif    public function initTimter():void{
10        intervalId = setInterval(doTimter,1000);
11    }

12    //定时器回调方法
13ExpandedBlockStart.gifContractedBlock.gif    public function doTimter():void{
14        showLabel.text = count.toString() + "second to go";
15        count -= 1;
16ExpandedSubBlockStart.gifContractedSubBlock.gif        if(count == 0){
17            showLabel.text = count.toString() + "second to go";
18            count=2;//重新开始定时
19            //clearInterval(intervalId);//移除定时 ,为了演示循环,屏蔽之
20            Alert.show("Time is up");
21        }

22    }

23]]>
24</mx:Script>
25<mx:Label id="showLabel"/>
26</mx:Application>

ContractedBlock.gif ExpandedBlockStart.gif Code
 1<?xml version="1.0" encoding="utf-8"?>
 2<mx:Application initialize="initTimter()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 3<mx:Script>
 4    <![CDATA[
 5    import mx.controls.Alert;
 6    public var count:Number=2//定义时间长度(秒)
 7    public var intervalId:Number;//定时器参数
 8    //定时器起动口
 9ExpandedBlockStart.gifContractedBlock.gif    public function initTimter():void{
10        intervalId = setInterval(doTimter,1000);
11    }
12    //定时器回调方法
13ExpandedBlockStart.gifContractedBlock.gif    public function doTimter():void{
14        showLabel.text = count.toString() + "second to go";
15        count -= 1;
16ExpandedSubBlockStart.gifContractedSubBlock.gif        if(count == 0){
17            showLabel.text = count.toString() + "second to go";
18            count=2;//重新开始定时
19            //clearInterval(intervalId);//移除定时 ,为了演示循环,屏蔽之
20            Alert.show("Time is up");
21        }
22    }
23]]>
24</mx:Script>
25<mx:Label id="showLabel"/>
26</mx:Application> 
以上代码来自 http://elprup.javaeye.com/blog/409442我做了一个小小的修改,以便能体现出它的重复特点。

转载于:https://www.cnblogs.com/Cnol/archive/2009/09/25/1573916.html

相关文章:

  • 逆向输出回环数组
  • 最近忙死了。。。
  • Caffe+Windows 环境搭建收集
  • 设计模式学习笔记--Façade外观模式
  • 自己动手,实现“你的名字”滤镜
  • 再谈ASP.NET第一 - ASP.NET2.0的回调机制
  • Yue Fei's Battle(组合计数递推)
  • apache地址限制和用户访问
  • Zigbee
  • 我谈通“下水道”(系列连载6)--新的征程
  • SpringBoot入门——应用devtools进行热部署
  • 对Action方法的参数进行双向转化
  • MATLAB中帮助的几种使用方法
  • 伪静态技术说明
  • Java中Model1和Model2
  • 分享的文章《人生如棋》
  • Docker容器管理
  • Java 内存分配及垃圾回收机制初探
  • java8-模拟hadoop
  • JavaScript设计模式与开发实践系列之策略模式
  • scrapy学习之路4(itemloder的使用)
  • underscore源码剖析之整体架构
  • yii2中session跨域名的问题
  • 警报:线上事故之CountDownLatch的威力
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 算法-插入排序
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 阿里云服务器如何修改远程端口?
  • ​LeetCode解法汇总518. 零钱兑换 II
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #QT项目实战(天气预报)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (javascript)再说document.body.scrollTop的使用问题
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (学习日记)2024.01.09
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转载)(官方)UE4--图像编程----着色器开发
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .axf 转化 .bin文件 的方法
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net 后台导出excel ,word
  • .net操作Excel出错解决
  • .NET多线程执行函数
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [20171106]配置客户端连接注意.txt