1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { _decorator, Component, Node, tween, Vec3, view } from 'cc';
- const { ccclass, property, executeInEditMode } = _decorator;
- @ccclass('WaitArea')
- @executeInEditMode
- export class WaitArea extends Component {
- @property(Node)
- waitNodes: Node = null!; // 实际存放杯子的节点
- // 直接使用waitNodes的子节点管理
- get cups(): Node[] {
- // 反转数组实现从右到左排列(最右杯子在数组末尾)
- return this.waitNodes.children.slice().reverse();
- }
- start() {
- // 获取设计分辨率和实际窗口尺寸
- const designSize = view.getDesignResolutionSize();
- const visibleSize = view.getVisibleSize();
- // 计算高度的缩放比例
- const scaleY = visibleSize.height / designSize.height;
- const originalY = this.node.worldPosition.y;
- const designSizeY = designSize.height * (scaleY - 1);
- const visibleSizeY = visibleSize.height * (scaleY - 1);
- this.node.worldPosition = new Vec3(this.node.worldPosition.x, originalY + (visibleSizeY - designSizeY), 0);
- }
- update(deltaTime: number) {
- }
- // 从右向左排列
- arrangeCups() {
- const startX = -50;
- const spacing = -110;
- this.cups.forEach((cup, index) => {
- const originalIndex = this.waitNodes.children.indexOf(cup);
- cup.setPosition(startX + originalIndex * spacing, 0, 0);
- });
- // console.log('WaitArea 杯子数量: ', this.cups.length);
- }
- addCup(cup: Node) {
- cup.setParent(this.waitNodes);
- this.arrangeCups();
- }
- takeCup(): Node | null {
- if (this.cups.length === 0) return null;
- const cup = this.cups.pop()!;
- // 仅解除父节点关系,不立即销毁
- cup.parent = null;
- this.arrangeCups();
- return cup;
- }
- // 添加明确的返回类型
- getCups(): Node[] {
- return this.waitNodes.children;
- }
- }
|