【咸鱼教程】可自动滚动的聊天文本框

本文介绍了一个基于Scroller和Label的聊天记录滚动组件实现方法。通过动态调整Label的高度和Scroller的视口位置,确保新消息始终展示在可见区域内。

教程目录 
一 演示效果
二 实现原理
三 代码
四 Demo下载


一 演示效果
 


二 实现原理

Scroller + Label实现
 


Label动态高度,随着输入文本增加而增加。
每输入一行,则将Scroller的视口viewport垂直位置scrollV对齐到Label底端。

三 代码


exml
 

代码

[Actionscript3]  纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
  * 主页场景
  * @author chenkai
  * [url=home.php?mod=space&uid=81950]@since[/url] 2017/4/20
  *
  * 实现可自行滚动的聊天文本框
  */
class HomeScene extends eui.Component{
         private chatLabel:eui.Label;          //聊天记录
         private inputLabel:eui.EditableText;  //输入文本
         private okBtn:eui.Rect;               //确定
         private chatScroller:eui.Scroller;    //聊天记录滚动容器
 
         public constructor() {
                 super ();
                 this .skinName = "HomeSceneSkin" ;
         }
 
         public childrenCreated(){
                 this .okBtn.addEventListener(egret.TouchEvent.TOUCH_TAP, this .onOkTouch, this );
         }
 
         private onOkTouch(){
                 //显示聊天记录
                 if ( this .chatLabel.text != "" ){
                         this .chatLabel.text +=  "\n" + this .inputLabel.text;
                 } else {
                         this .chatLabel.text +=  this .inputLabel.text;
                 }
                 
                 //文本高度大于滚动容器高度时,将视口置于文本最后一行
                 if ( this .chatLabel.height > this .chatScroller.height){
                         this .chatScroller.viewport.scrollV = this .chatLabel.height - this .chatScroller.height;
                 }
 
                 //清空输入文本
                 this .inputLabel.text = "" ;
         }
}



Demo下载

转载于:https://www.cnblogs.com/gamedaybyday/p/9219933.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值