2022-08-29 15:17:11 +08:00
|
|
|
import { Action } from "./Action";
|
|
|
|
import { ActionWithType } from "./ActionWithType";
|
|
|
|
import { ActionWithType2 } from "./ActionWithType2";
|
|
|
|
|
|
|
|
const {ccclass, property} = cc._decorator;
|
|
|
|
|
|
|
|
enum CustomType {
|
|
|
|
Ex1, Ex2
|
|
|
|
}
|
|
|
|
|
|
|
|
class CustomEvent extends ActionWithType<CustomType, number> {}
|
|
|
|
class CustomEvent2 extends ActionWithType2<CustomType, number> {}
|
|
|
|
|
|
|
|
@ccclass
|
|
|
|
export default class NewClass extends cc.Component {
|
|
|
|
callback: Action<number> = new Action<number>();
|
|
|
|
customCallback: CustomEvent = new CustomEvent();
|
|
|
|
customCallback2: CustomEvent2 = new CustomEvent2();
|
|
|
|
|
|
|
|
private num: number = 0;
|
|
|
|
|
|
|
|
start () {
|
|
|
|
this.callback.AddCallback(this.CB, this);
|
|
|
|
this.callback.AddCallbackOnce(this.OnceCB, this);
|
|
|
|
|
|
|
|
this.customCallback.AddCallback(CustomType.Ex1, this.CBType, this);
|
|
|
|
this.customCallback.AddCallbackOnce(CustomType.Ex2, this.OnceCBType, this);
|
|
|
|
|
|
|
|
this.customCallback2.AddCallback(CustomType.Ex2, this.CBTypeAllin1, this);
|
|
|
|
this.customCallback2.AddCallbackOnce(CustomType.Ex1, this.CBTypeAllin1, this);
|
|
|
|
}
|
|
|
|
|
|
|
|
DispatchClick() {
|
|
|
|
this.num++;
|
|
|
|
|
|
|
|
this.callback.DispatchCallback(this.num);
|
|
|
|
|
|
|
|
this.customCallback.DispatchCallback(CustomType.Ex1, this.num);
|
|
|
|
this.customCallback.DispatchCallback(CustomType.Ex2, this.num);
|
|
|
|
|
|
|
|
this.customCallback2.DispatchCallback(CustomType.Ex1, this.num);
|
|
|
|
this.customCallback2.DispatchCallback(CustomType.Ex2, this.num);
|
|
|
|
}
|
|
|
|
|
|
|
|
RemoveEventClick() {
|
|
|
|
this.callback.RemoveByCallback(this.CB);
|
|
|
|
// this.callback.RemoveByCallback(this.OnceCB);
|
|
|
|
// this.callback.RemoveByBindTarget(this);
|
|
|
|
// this.callback.RemoveAll();
|
|
|
|
|
|
|
|
// this.callbackWithType.RemoveByCallback(this.CBType);
|
|
|
|
// this.callbackWithType.RemoveByCallback(this.OnceCBType);
|
|
|
|
this.customCallback.RemoveByType(CustomType.Ex1);
|
|
|
|
// this.callbackWithType.RemoveByType(CustomType.Ex2);
|
|
|
|
// this.callbackWithType.RemoveByBindTarget(this);
|
|
|
|
// this.callbackWithType.RemoveAll();
|
|
|
|
}
|
|
|
|
|
|
|
|
OnceCB(x: number) {
|
|
|
|
cc.log(`OnceCB [${this.num}]`);
|
|
|
|
}
|
|
|
|
|
|
|
|
CB(x: number) {
|
|
|
|
cc.log(`CB [${this.num}]`);
|
|
|
|
}
|
|
|
|
|
|
|
|
OnceCBType(x: number) {
|
|
|
|
cc.log(`OnceCBType [${this.num}]`);
|
|
|
|
}
|
|
|
|
|
|
|
|
CBType(x: number) {
|
|
|
|
cc.log(`CBType [${this.num}]`);
|
|
|
|
}
|
|
|
|
|
|
|
|
CBTypeAllin1(type: CustomType,x: number) {
|
|
|
|
// switch (type) {
|
|
|
|
// case CustomType.Ex1:
|
|
|
|
// break;
|
|
|
|
// case CustomType.Ex2:
|
|
|
|
// break;
|
|
|
|
// }
|
|
|
|
|
|
|
|
cc.log(`CBTypeAllin1 [${CustomType[type]}][${this.num}]`);
|
|
|
|
}
|
2022-08-26 16:48:17 +08:00
|
|
|
}
|