关于静态
把类class里面的得分设置成静态变量不就方便访问了吗?
VScode当场报错,证明此方法不可行
那如果在使用class里变量申明呐?经验证还是报错
调用还是要用
const control = ts_control.getinff() // 获取 control 类
this.fennow = control.defen // 获取当前得分
最高分存取
核心方法
localStorage.setItem(索引名,值) // 存
localStorage.getItem(索引名) // 取
索引名与值均是string格式
类似于 ini 格式文件
重新开始
核心方法
director.loadScene(director.getScene().name) // 重新加载
director.resume() // 游戏继续,不写此代码游戏背景不走,敌机不生成
小技巧
string 报错的时候注意检查 Label 组件是否绑定上
双击爆炸实现
双击使用炸弹核心两点
- 双击检测
- 销毁所有敌机
实现双击触发事件
实现双击核心代码
doubletime : number = 0.3 // 双击生效时间间隔
clicktime : number = 0 // 最后一次点击保存事件
protected onLoad(): void {
input.on(Input.EventType.TOUCH_END,this.ontouchend,this) // 注册双击监听事件
}
ontouchend(){
let now = Date.now() // 获取最新一次点击时间
let time1 = (now - this.clicktime) / 1000 // 双击时间差换算成秒
if (time1 < this.doubletime){
console.log(`双击成功`)
this.ondouble() // 实际双击执行事件
}
this.clicktime = now // 不管双击成功与否都保留最后一次点击时间
}
ondouble(){
}
销毁所有敌机
敌机是在什么节点上生成的,就用那个节点来存储敌机信息,便于销毁
enemy_arr : Node[] = [] // 存储所有敌机,便于销毁
onrate0(){
let en0 = instantiate(this.enemy0) // 实例化
this.linshi.addChild(en0) // 实体化
let posx = math.randomRangeInt(-240,240) // 获取随机数
let pw = this.linshi.getWorldPosition() // 获取临时点世界坐标
en0.setWorldPosition(pw.x + posx , pw.y + 426 , pw.z) // 设置敌机位置
this.enemy_arr.push(en0) // 新生成的敌机保存进数组
}
这里只是展示了点示例 (临时存储点其实可以不用,可以缩减1行代码,懒得改了)
也有个问题,把生成的敌机存进数组,
是绑定 (赋值) 的形式?还是复制信息的形式?
绑定意味着敌机销毁时,数组成员也会销毁,或者报错
复制信息,就意味着在敌机销毁时要删除数组里复制的信息
小技巧
property 要识别数组成员,需加上中括号 []
@property([Node]) enemy_arr : Node[] = [] // 存储所有敌机,便于销毁
改造敌机死亡
因为之前敌机死亡,我是直接用的销毁,虽然报警,但没报错,就一直忽略
现在这里牵涉到一个敌机生成与销毁数组对应关系,必须改造了
敌机属性代码
import {
_decorator, Animation, Collider2D, Component, Contact2DType, Node} from 'cc';
import {
ts_control } from './ts_control';
import {
ts_enemy_rate } from './ts_enemy_rate';
const {
ccclass, property } = _decorator;
@ccclass('ts_enemy_att')
export class ts_enemy_att extends Component {
@property name1 : string = '' // 动画名前缀
@property speed : number = 200 // 移动速度
@property hp : number = 1 // 生命值
@property jifen : number = 0 // 计分
@property(Animation) anim : Animation = null // 动画
collider : Collider2D = null
enemy_rate = ts_enemy_rate.getinff()
static inff : ts_enemy_att
static getinff() : ts_enemy_att {
return this.inff}
protected onLoad(): void {
ts_enemy_att.inff = this
}
start() {
this.collider = this.getComponent(Collider2D)
if (this.collider) {
this.collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this); // 打开触发器
//collider.on(Contact2DType.END_CONTACT, this.onEndContact, this); // 结束触发没必要
}
this.jifen = this.hp

最低0.47元/天 解锁文章
1108

被折叠的 条评论
为什么被折叠?



