// Learn TypeScript: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/typescript.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html // Learn Attribute: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html const {ccclass, property} = cc._decorator; @ccclass export default class NewClass extends cc.Component { duratrion : number = 2.5; moveAmountX : number = 0; RTL: boolean = false; moveEnemy : cc.ActionInterval; @property(cc.Prefab) yellowBullet: cc.Prefab = null; enemyLife: number = 1 playAnimation : Boolean = true; setMovements() { var moveLeft = cc.moveBy(this.duratrion, cc.v2(-this.moveAmountX, -this.node.parent.getContentSize().height * 0.32)); var moveRight = cc.moveBy(this.duratrion, cc.v2(this.moveAmountX, -this.node.parent.getContentSize().height * 0.32)); this.node.runAction(cc.repeatForever(this.RTL ? cc.sequence(moveRight, moveLeft) : cc.sequence(moveLeft, moveRight))); } shootBullets() { var bullet = cc.instantiate(this.yellowBullet); bullet.setPosition(this.node.position.x, this.node.position.y - 60); this.node.parent.addChild(bullet); } // LIFE-CYCLE CALLBACKS: onLoad () { this.scheduleOnce(this.setMovements, 0.1); this.schedule(this.shootBullets, Math.random() * 1 + 1, cc.macro.REPEAT_FOREVER, 0); } onCollisionEnter(otherCollider, selfCollider) { if(otherCollider.name === 'greenbullet') { this.enemyLife--; if(this.enemyLife <= 0 && this.playAnimation) { this.node.getComponent(cc.Collider).enabled = false; this.node.stopAllActions(); this.playAnimation = false; this.node.getComponent(cc.Animation).play(); } } if(otherCollider.name === 'player') { this.node.destroy(); cc.director.loadScene('Menu'); } } removeExplosion() { this.node.destroy(); } start () { } update (dt) { if(this.node.position.y <= -(this.node.parent.getContentSize().height)) { this.node.destroy(); cc.director.loadScene('Menu'); } } }