noticePannelCtr.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { _decorator, Component, Label, LabelComponent, Node, Size, Tween, tween, UITransform, v3, Vec3 } from 'cc';
  2. const { ccclass, property } = _decorator;
  3. @ccclass('noticePannelCtr')
  4. export class noticePannelCtr extends Component {
  5. private label:Node|null = null;
  6. private mask:Node|null = null;
  7. private label_pos: Vec3 = new Vec3(0, 0, 0);
  8. private label_length = null;
  9. private rollTween:Tween<Node> = null;
  10. start() {
  11. this.mask = this.node.getChildByName('Mask');
  12. this.label = this.mask.getChildByName('text_notice');
  13. this.label_pos = this.label.getPosition().clone();
  14. this.labelRoll();
  15. }
  16. update(deltaTime: number) {
  17. }
  18. updateText(str: string)
  19. {
  20. this.rollTween.stop()
  21. this.label.getComponent(Label).string = str
  22. this.label.getComponent(UITransform).contentSize = new Size(str.length*25, this.label.getComponent(UITransform).contentSize.y);
  23. this.label.setPosition(this.label_pos)
  24. this.labelRoll()
  25. }
  26. labelRoll(){
  27. this.label_length = this.label.getComponent(UITransform).contentSize.x;
  28. const moveToLeft = tween().by(10, { position: v3(-this.label_length-850, 0) });
  29. const resetPosition = tween().call(() => {
  30. this.label.setPosition(this.label_pos);
  31. });
  32. const sequence = tween().sequence( moveToLeft, resetPosition);
  33. this.rollTween = tween(this.label)
  34. .then(sequence.repeatForever())
  35. .start()
  36. }
  37. }