加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 MonsterJohnCN 于 2016-1-29 13:46 编辑
原理
通过修改某个精灵的update函数,实现每帧遍历监视器列表,执行监视器列表内的函数
作用
更方便的为精灵添加多个“每帧动作”,通常可用于 粒子系统、文字特效、淡入淡出、行走脚步声 等需要每帧进行数据更新的功能
注册器
function 为精灵注册监视器(精灵) { 精灵.监视器 = {} 精灵.update = function () { if (精灵.监视器 == null) return for (var 名字 in 精灵.监视器) { var 当前监视器 = 精灵.监视器[名字] if (typeof 当前监视器 == "function") { 当前监视器() } } 精灵.children.forEach(function (child) { if (child.update) { child.update() } }) } }
function 为精灵注册监视器(精灵) {
精灵.监视器 = {}
精灵.update = function () {
if (精灵.监视器 == null) return
for (var 名字 in 精灵.监视器) {
var 当前监视器 = 精灵.监视器[名字]
if (typeof 当前监视器 == "function") {
当前监视器()
}
}
精灵.children.forEach(function (child) {
if (child.update) {
child.update()
}
})
}
}
使用示例(在游戏内按F8后打开调试面板,输入以下代码即可。注意需先创建“为精灵注册监视器”函数)
var 精灵 = new Sprite() 为精灵注册监视器(精灵) 精灵.存活时间 = 0 精灵.监视器.存活时间计数 = function () { Graphics.frameCount % 60 == 0 ? console.log("精灵已存活时间:", ++精灵.存活时间) : null } SceneManager._scene.addChild(精灵)
var 精灵 = new Sprite()
为精灵注册监视器(精灵)
精灵.存活时间 = 0
精灵.监视器.存活时间计数 = function () {
Graphics.frameCount % 60 == 0 ? console.log("精灵已存活时间:", ++精灵.存活时间) : null
}
SceneManager._scene.addChild(精灵)
其它
使用中文函数的前提:.js文件的字符编码格式为UTF-8
如果担心中文函数造成崩坏,请自行翻译为英文(雾
可通过修改Sprite.prototype.initialize函数,实现自动为每个精灵添加监视器机制(本帖就不说如何实现了,请自行研究) |