import { _decorator, Component, Label, LabelComponent, Node, Size, Tween, tween, UITransform, v3, Vec3 } from 'cc'; const { ccclass, property } = _decorator; @ccclass('noticePannelCtr') export class noticePannelCtr extends Component { private label:Node|null = null; private mask:Node|null = null; private label_pos: Vec3 = new Vec3(0, 0, 0); private label_length = null; private rollTween:Tween = null; start() { this.mask = this.node.getChildByName('Mask'); this.label = this.mask.getChildByName('text_notice'); this.label_pos = this.label.getPosition().clone(); this.labelRoll(); } update(deltaTime: number) { } updateText(str: string) { this.rollTween.stop() this.label.getComponent(Label).string = str this.label.getComponent(UITransform).contentSize = new Size(str.length*25, this.label.getComponent(UITransform).contentSize.y); this.label.setPosition(this.label_pos) this.labelRoll() } labelRoll(){ this.label_length = this.label.getComponent(UITransform).contentSize.x; const moveToLeft = tween().by(10, { position: v3(-this.label_length-850, 0) }); const resetPosition = tween().call(() => { this.label.setPosition(this.label_pos); }); const sequence = tween().sequence( moveToLeft, resetPosition); this.rollTween = tween(this.label) .then(sequence.repeatForever()) .start() } }