138 lines
3.7 KiB
TypeScript
138 lines
3.7 KiB
TypeScript
// Learn TypeScript:
|
|
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
|
// Learn Attribute:
|
|
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
|
// Learn life-cycle callbacks:
|
|
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
|
|
|
//出现块的类型,问题以及答案
|
|
var BlockType = cc.Enum({
|
|
problem_In: 1, //内圈问题
|
|
problem_Out: 2, //外圈问题
|
|
correct_In:3, //内圈正确答案
|
|
correct_Out:4, //外圈正确答案
|
|
err_In:5, //内圈错误答案
|
|
err_Out:6, //外圈错误答案
|
|
});
|
|
|
|
const {ccclass, property} = cc._decorator;
|
|
|
|
@ccclass
|
|
export default class Block extends cc.Component {
|
|
|
|
@property(cc.Asset)
|
|
UI: cc.Asset = null;
|
|
|
|
_touch: boolean;
|
|
_start: boolean;
|
|
_answer: boolean;
|
|
_inside: boolean;
|
|
_idNumber: number;
|
|
GameManager: any;
|
|
tube_Array: number[][];//管子数组
|
|
|
|
// LIFE-CYCLE CALLBACKS:
|
|
|
|
onLoad () {
|
|
// this.init();
|
|
this.GameManager = this.node.parent.parent.parent.getComponent("GameManager");
|
|
this._touch = false;
|
|
this._start = false;
|
|
this._answer = false;
|
|
this._inside = true;
|
|
this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this);
|
|
}
|
|
|
|
init(type,id){
|
|
if(type == BlockType.correct_Out){
|
|
|
|
}
|
|
}
|
|
|
|
setId(id){
|
|
this._idNumber = id;
|
|
}
|
|
|
|
answerShow(texture){
|
|
this.node.getChildByName("texture").active = true;
|
|
let textureName = "texture"+texture;
|
|
// @ts-ignore
|
|
this.node.getChildByName("texture").getComponent(cc.Sprite).spriteFrame = this.UI._spriteFrames[textureName];
|
|
cc.tween(this.node.getChildByName("texture"))
|
|
.to(0.01,{opacity:255})
|
|
.delay(this.GameManager.config["showTime"]-0.05)
|
|
.call(() =>{
|
|
if(this._inside){
|
|
this.node.getChildByName("texture").opacity = 0;
|
|
}
|
|
})
|
|
.start();
|
|
}
|
|
|
|
lockShow(type,inside){
|
|
this.node.getChildByName("texture").active = false;
|
|
this._answer = type;
|
|
this._inside = inside;
|
|
this.node.getChildByName("lock").active = true;
|
|
this._touch = true;
|
|
}
|
|
|
|
lockHide(){
|
|
this.node.getChildByName("lock").active = false;
|
|
this._touch = false;
|
|
}
|
|
|
|
show(type,inside,texture){
|
|
// this._answer = type;
|
|
this._inside = inside;
|
|
if(inside) this._answer = type;
|
|
let textureName = "texture"+texture;
|
|
this.node.getChildByName("texture").active = true;
|
|
//正确答案
|
|
//@ts-ignore
|
|
this.node.getChildByName("texture").getComponent(cc.Sprite).spriteFrame = this.UI._spriteFrames[textureName];
|
|
cc.tween(this.node.getChildByName("texture"))
|
|
.to(0.01,{opacity:255})
|
|
// .delay(this.GameManager.config["showTime"]-0.1)
|
|
.call(() =>{
|
|
if(inside){
|
|
this._touch = true;
|
|
}
|
|
})
|
|
.start();
|
|
|
|
}
|
|
|
|
set_Pos(){
|
|
this._start = true;
|
|
}
|
|
|
|
set_Touch(type){
|
|
this._touch = type;
|
|
}
|
|
|
|
start () {
|
|
|
|
}
|
|
//开始点击,提高层级
|
|
touchStart (event) {
|
|
if(this._touch){
|
|
if(this._answer){
|
|
this.node.getChildByName("yes").active = true;
|
|
let data = {"result":true,"type":this._inside,id:this._idNumber};
|
|
cc.fx.Notifications.emit("result",data);
|
|
}
|
|
else{
|
|
this.node.getChildByName("err").active = true;
|
|
let data = {"result":false,"type":this._inside,id:this._idNumber};
|
|
cc.fx.Notifications.emit("result",data);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// update (dt) {
|
|
|
|
// }
|
|
}
|