UIHelper.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { Button, Sprite, view, Node, ScrollView, Vec2, Vec3, TiledLayer, Size } from "cc";
  2. import List from "../list/List";
  3. export class UIHelper {
  4. //将一个按钮置灰
  5. static buttonEnable(button: Button, enable: boolean) {
  6. if (button) {
  7. let sprite = button.getComponent(Sprite);
  8. (sprite) && (sprite.grayscale = !enable);
  9. button.interactable = enable;
  10. }
  11. }
  12. //获取设计分辨率
  13. static getDesignSize() {
  14. return view.getDesignResolutionSize();
  15. }
  16. //设置节点layer
  17. static setLayer(node: Node, layer: number) {
  18. if (node) {
  19. node.layer = layer;
  20. node.walk((child) => {
  21. child.layer = layer;
  22. });
  23. }
  24. }
  25. //销毁一个List或者是ScrollView
  26. static destroyList(view: List | ScrollView, name: any) {
  27. if (view) {
  28. view.node.active = true;
  29. for (let child of view.content.children) {
  30. let comp = child.getComponent(name);
  31. if (comp && comp["onClose"]) {
  32. let callback: Function = comp["onClose"];
  33. callback.apply(comp);
  34. }
  35. }
  36. view.node.destroy();
  37. view = null;
  38. }
  39. }
  40. //将OpenGL坐标转为Tiledmap坐标
  41. static openGLToTiled(pos: Vec3, map_size: Size, tile_size: Size) {
  42. let out = new Vec2();
  43. if (pos && map_size && tile_size) {
  44. out.x = Math.floor(pos.x / tile_size.width);
  45. out.y = Math.floor((map_size.height * tile_size.height - pos.y) / tile_size.height);
  46. }
  47. return out;
  48. }
  49. //将Tiledmap坐标转为OpenGL坐标
  50. static tiledToOpenGL(pos: Vec3, map_size: Size, tile_size: Size) {
  51. let out = new Vec2();
  52. if (pos && map_size && tile_size) {
  53. out.x = pos.x * tile_size.width + tile_size.width / 2;
  54. out.y = (map_size.height - pos.y) * tile_size.height - tile_size.height / 2;
  55. }
  56. return out;
  57. }
  58. }