1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import { instantiate } from "cc";
- import { _decorator, Node } from "cc";
- import { Label } from "cc";
- import { Component } from "cc";
- import { Button } from "cc";
- import { UITransform } from "cc";
- import { Color } from "cc";
- const { ccclass, property } = _decorator;
- export interface OnTabClickListener {
- onTabClick(index: number);
- }
- @ccclass("CommonTabsTitle")
- export class CommonTabsTitle extends Component {
- private _clickDisableIndexes: number[] = [];
- setClickDisableIndexes(indexes: number[]) {
- this._clickDisableIndexes = indexes;
- }
- public get selectIndex(): number {
- return this._selectIndex;
- }
- private _listener: OnTabClickListener;
- public init(titles: string[], listener: OnTabClickListener) {
- this._listener = listener;
- let tpl = this.node.children[0];
- if (tpl.getComponent(Button) != null) {
- tpl.getComponent(Button).clickEvents = [];
- } else {
- tpl.addComponent(Button);
- }
- for (let i = this.node.children.length; i < titles.length; i++) {
- let tab = instantiate(tpl);
- tab.name = "tab_" + i;
- tab.setParent(this.node);
- }
- for (let i = 0; i < this.node.children.length; i++) {
- let tab = this.node.children[i];
- tab.on(Button.EventType.CLICK, this.Q_Click_Tab, this);
- let t = tab.getChildByName("value").getComponent(Label);
- t.string = titles[i];
- }
- // this.setSelect(0);
- }
- public setSelect(index: number) {
- if (index == this._selectIndex) return;
- for (let i = 0; i < this.node.children.length; i++) {
- this.node.children[i].getChildByName("select").active = i == index;
- // this.node.children[i].getChildByName("value").getComponent(Label).color =
- // i != index
- // ? new Color(255, 255, 255, 255)
- // : new Color(192, 242, 131, 255);
- }
- this._selectIndex = index;
- }
- private _selectIndex: number = -1;
- Q_Click_Tab(event: any) {
- console.log("Q_Click_Tab 222", event.target.name);
- let index = parseInt(event.target.name.split("_")[1]);
- if (index == this._selectIndex) return;
- if (
- this._clickDisableIndexes &&
- this._clickDisableIndexes.indexOf(index) != -1
- ) {
- // 不可点击的tab
- // Tips.show("Coming soon");
- return;
- }
- this.setSelect(index);
- this._selectIndex = index;
- console.log("onTabClick", index);
- console.log(this._listener);
- this._listener.onTabClick(index);
- }
- }
|