UIHelper.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { AppKernel } from "@scripts/app/AppKernel";
  2. import { Button, Color, Component, Node, Sprite, Toggle, UIOpacity, UIRenderer, UITransform, find } from "cc";
  3. const CUSTOM_CLICK = "_customOnClick";
  4. export function addBtnClick(btn: Button | Node, onClick: Function, target?) {
  5. const onClickHandle = () => {
  6. AppKernel.sound.playBtnClick();
  7. onClick && onClick.apply(target);
  8. }
  9. const isNode = btn instanceof Node;
  10. const event_key = isNode ? Node.EventType.TOUCH_END : Button.EventType.CLICK;
  11. const btn_node = isNode ? btn : btn.node;
  12. btn_node.on(event_key, onClickHandle);
  13. btn_node[CUSTOM_CLICK] = onClickHandle;
  14. }
  15. export function removeBtnClick(btn: Button | Node, onClick, target) {
  16. const isNode = btn instanceof Node;
  17. const event_key = isNode ? Node.EventType.TOUCH_END : Button.EventType.CLICK;
  18. const btn_node = isNode ? btn : btn.node;
  19. const onClickHandle = btn_node[CUSTOM_CLICK];
  20. if (onClickHandle) {
  21. btn_node.off(event_key, onClickHandle);
  22. return;
  23. }
  24. btn_node.off(event_key, onClick, target);
  25. }
  26. export function addTogClick(tog: Toggle | Node, onToggle: Function, target?) {
  27. if (tog instanceof Toggle) {
  28. tog = tog.node;
  29. }
  30. tog.on(Toggle.EventType.CLICK, onToggle, target)
  31. }
  32. /**
  33. * 设置透明度
  34. * @param ui
  35. * @param alpha 0 ~ 1;
  36. * @returns
  37. */
  38. export function setAlpha(ui: UIRenderer | Node, alpha: number) {
  39. if (ui instanceof Node) {
  40. const comp = ui.getComponent(UIOpacity) || ui.addComponent(UIOpacity);
  41. comp.opacity = alpha;
  42. return;
  43. }
  44. let color = ui.color.clone();
  45. color.a = 255 * alpha;
  46. ui.color = color;
  47. }
  48. export function setAsLastSibling(node: Node) {
  49. let index = node.parent.children.length - 1;
  50. index = Math.max(0, index);
  51. node.setSiblingIndex(index);
  52. }
  53. export enum ImgFitMode {
  54. FitWidth = 1,
  55. FitHeight
  56. }
  57. export function setSpriteFitMode(sprite: Sprite, fitMoed?: ImgFitMode) {
  58. if (sprite === null || !sprite.spriteFrame) return;
  59. if (fitMoed === null) return;
  60. sprite.sizeMode = Sprite.SizeMode.CUSTOM;
  61. sprite['']
  62. const trans = sprite.node.getComponent(UITransform);
  63. const ratio = sprite.spriteFrame.width / sprite.spriteFrame.height;
  64. switch (fitMoed) {
  65. case ImgFitMode.FitHeight:
  66. trans.width = ratio * trans.height
  67. break;
  68. case ImgFitMode.FitWidth:
  69. trans.height = trans.width / ratio;
  70. break;
  71. }
  72. }