UIHelper.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { AppKernel } from "@scripts/app/AppKernel";
  2. import { Button, Color, Component, Node, Toggle, UIOpacity, UIRenderer, 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. }