ElementAction.ts 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { _decorator, BoxCollider2D, CircleCollider2D, Color, Component, director, instantiate, Material, Node, PolygonCollider2D, Prefab, Rect, RigidBody2D, Sprite, UIRenderer, UITransform, Vec4, view } from 'cc';
  2. import { HoleAction } from './HoleAction';
  3. import { PinAction } from './PinAction';
  4. import { PoolMgr } from './PoolMagr';
  5. import { ColorDate } from './ColorDate';
  6. import { Global } from './Global';
  7. import { events } from './Enums';
  8. const { ccclass, property } = _decorator;
  9. @ccclass('ElementAction')
  10. export class ElementAction extends Component {
  11. // cur_color:ColorDate = null;
  12. start() {
  13. }
  14. update(deltaTime: number) {
  15. let currentPosition = this.node.getPosition()
  16. if (currentPosition.y < - view.getVisibleSize().height / 2) {
  17. this.node.removeFromParent();
  18. director.emit(events.remove_element,this);
  19. }
  20. }
  21. public get_hole_num(): number {
  22. let hole_num: number = 0;
  23. this.node.children.forEach(element => {
  24. if (element.getComponent(HoleAction)) {
  25. hole_num++;
  26. }
  27. });
  28. return hole_num;
  29. }
  30. public init_element(group_id: number, ele_color: ColorDate) {
  31. this.node.getComponent(RigidBody2D).group = group_id;
  32. this.node.getComponents(BoxCollider2D).forEach(element => {
  33. element.group = group_id;
  34. });
  35. this.node.getComponents(CircleCollider2D).forEach(element => {
  36. element.group = group_id;
  37. });
  38. this.node.getComponents(PolygonCollider2D).forEach(element => {
  39. element.group = group_id;
  40. });
  41. //set img color
  42. // this.cur_color = ele_color;
  43. this.node.children.forEach(element => {
  44. if (element.name == "img") {
  45. let img = element.getComponent(Sprite);
  46. img.color = new Color(ele_color.r, ele_color.g, ele_color.b, 190);
  47. }
  48. });
  49. }
  50. public init_pin(group_id: number, color_pin_arr: ColorDate[]) {
  51. //获取 hole
  52. this.node.children.forEach(element => {
  53. if (element.getComponent(HoleAction)) {
  54. let new_pin = instantiate(PoolMgr.ins.getPrefab("pin"));
  55. this.node.addChild(new_pin);
  56. new_pin.setPosition(element.position);
  57. new_pin.getComponent(PinAction).init_date(group_id, color_pin_arr.shift());
  58. }
  59. });
  60. }
  61. get_pin_color(arr:PinAction[]){
  62. this.node.children.forEach(pin_node => {
  63. // pin_node.getComponent(PinAction)?.get_pin_color(arr);
  64. let pin_action = pin_node.getComponent(PinAction)
  65. if(pin_action&&pin_action.pin_color){
  66. arr.push(pin_node.getComponent(PinAction));
  67. }
  68. });
  69. }
  70. }