Laya-滚动文本demo制作

咱先不讲正文,先让我吐槽一会,我就想知道滚动文本啥的怎么做,自己做的一直没法滚动,结果,上laya官网照着做发现那他妈里面有些地方压根就不知道怎么做,然后我又去翻了几篇关于laya滚动文本制作的文章,看的是真的火大。写技术文章不应该是给别人看懂的么,他们写的什么鬼啊,新手看不懂、高手又不需要的,神经病啊。

先展示最终效果

好了,开始正文。我一步步来,从新建空项目开始讲。

首先自然是新建一个场景,对这Scenes右键,选择新建->页面/场景。这里我取的名字是test

   

双击test.scene,然后在左下角那里的层级右键,选择创建组件-->List  

创建好list组件之后调整它的大小和位置,

创建组件的方式截图不好截,还是直接拖组件吧,各位自己选喜欢的方式哈

  

然后随便改下Box的大小

为了容易看出效果来,我们在Box中创建Labal组件

想让Label组件直接跟父元素同样大小的话,可以在右侧属性面板中修改,图片看不清的话请放大看

 

开始干活,首先我们先双击List组件,然后在右侧的属性面板中找到renderType,将它设置为renderType:render

其次,我们给这个List组件添加上一个滚动条

其次,我们需要设置下面这些

 

然后咱们来设置里边的Box组件,将Box组件 右侧属性面板中的renderType属性值设置为render。

在Script文件夹中新建一个脚本文件,取名随你喜欢,我的是取名scrollCtr

 

随后打开代码编辑器,修改scrollCtr.ts代码

代码贴在下面了,各位自取

export default class ScrollCtr extends Laya.Script {
    private mlist: Laya.List;
    constructor() {
        super();
    }
    onAwake() {
        // 使用这串代码需要先将代码挂载到对应的组件上,不然找不到this指向谁的
        let self = this.owner;
        
        // 这里的mList并不是一定要跟被挂载的组件同名的,
        // 你看上面是不是写了private mlist: Laya.List,嗯,是跟这一个同名的
        this.mlist = self as Laya.List;

        // 这段是将mlist的内容填充
        var data: Array<any> = [];
        for(var m:number =0;m<20;m++){
             data.push({m_label:"No."+m});
        }
        this.mlist.array = data;

        // 橡皮筋回弹时间
        this.mlist.scrollBar.elasticBackTime = 100;
        // 橡皮筋效果极限距离,0为没有橡皮筋效果。
        this.mlist.scrollBar.elasticDistance = 100;
        // 获取或设置表示最低滚动位置的数字
        this.mlist.scrollBar.min = 0;
        // 获取或设置表示最高滚动位置的数字。
        this.mlist.scrollBar.max = 2000;
    }

    onUpdate() {

    }
}

现在返回laya引擎,就可以看到下面的样子了

是不是以为现在就可以滚动了,错!代码都没挂上去呢,不信你运行试试

那么怎么挂载代码上去

好了,现在可以运行了,你可以用鼠标滚动内容了(滚动条样子跟我一开始说的不太一样,我之后再看看什么情况)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现HTML文本逐个显示出来的效果,您可以结合Tween类和HTML文本的方式来实现。以下是一个示例代码: ```typescript // 创建文本对象 var text = new Laya.Text(); text.width = 400; text.wordWrap = true; text.fontSize = 24; text.color = "#ffffff"; text.pos(100, 100); Laya.stage.addChild(text); // 设置HTML文本 var htmlText = "<font color='#ff0000'>Hello, World!</font>"; text.innerHTML = htmlText; // 获取HTML文本的每个字符 var chars = []; for (var i = 0; i < htmlText.length; i++) { chars.push(htmlText.charAt(i)); } // 逐个显示HTML文本的字符 function showTextByChar() { var charIndex = 0; Laya.timer.loop(100, this, function() { if (charIndex <= chars.length) { var subHtml = chars.slice(0, charIndex).join(""); text.innerHTML = subHtml; charIndex++; } else { Laya.timer.clearAll(this); } }); } // 开始逐个显示HTML文本 showTextByChar(); ``` 在上面的示例代码中,我们首先创建了一个文本对象,并设置了相关的样式和位置。然后使用`innerHTML`属性来设置HTML文本。接着通过遍历HTML文本的每个字符,将其保存到一个数组中。 然后定义了一个名为`showTextByChar`的函数,该函数通过Laya.timer定时器每隔一段时间,将数组中逐个字符拼接为子串,并将其赋值给文本对象的`innerHTML`属性,实现逐个显示HTML文本的效果。 最后通过调用`showTextByChar`函数来启动逐个显示HTML文本的过程。 您可以根据自己的需求调整定时器的间隔时间和文本截取的方式,以达到您想要的效果。希望对您有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值