39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { _decorator, Component, Node, tween, Vec3 } from "cc";
|
|
import { SimpleToggle } from "./SimpleToggle";
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass("SimpleToggleGroup")
|
|
export class SimpleToggleGroup extends Component {
|
|
toggles: SimpleToggle[];
|
|
|
|
@property(Node)
|
|
slider: Node;
|
|
|
|
protected onLoad(): void {
|
|
this.toggles = this.getComponentsInChildren(SimpleToggle);
|
|
|
|
for (let i = 0; i < this.toggles.length; i++) {
|
|
const element = this.toggles[i];
|
|
element.toggleGroupCallBack = this.toggleSelected.bind(this);
|
|
}
|
|
}
|
|
|
|
toggleSelected(selectedNode: Node) {
|
|
const pos = this.slider.getPosition();
|
|
const targetPos = new Vec3(selectedNode.getPosition().x, pos.y, pos.z);
|
|
tween(this.slider)
|
|
.to(0.3, { position: targetPos }, { easing: "sineInOut" })
|
|
.start();
|
|
|
|
for (let i = 0; i < this.toggles.length; i++) {
|
|
const element = this.toggles[i];
|
|
if (element.node === selectedNode) {
|
|
element.refresh(true);
|
|
} else {
|
|
element.refresh(false);
|
|
element.btn.interactable = true;
|
|
}
|
|
}
|
|
}
|
|
}
|