Project1

标题: 【脚本:增强逻辑】精灵的监视器机制 [打印本页]

作者: MonsterJohnCN    时间: 2016-1-29 12:48
标题: 【脚本:增强逻辑】精灵的监视器机制
本帖最后由 MonsterJohnCN 于 2016-1-29 13:46 编辑


原理

通过修改某个精灵的update函数,实现每帧遍历监视器列表,执行监视器列表内的函数


作用

更方便的为精灵添加多个“每帧动作”,通常可用于 粒子系统文字特效淡入淡出行走脚步声 等需要每帧进行数据更新的功能


注册器

JAVASCRIPT 代码复制
  1. function 为精灵注册监视器(精灵) {
  2.     精灵.监视器 = {}
  3.     精灵.update = function () {
  4.         if (精灵.监视器 == null) return
  5.         for (var 名字 in 精灵.监视器) {
  6.             var 当前监视器 = 精灵.监视器[名字]
  7.             if (typeof 当前监视器 == "function") {
  8.                 当前监视器()
  9.             }
  10.         }
  11.         精灵.children.forEach(function (child) {
  12.             if (child.update) {
  13.                 child.update()
  14.             }
  15.         })
  16.     }
  17. }


使用示例(在游戏内按F8后打开调试面板,输入以下代码即可。注意需先创建“为精灵注册监视器”函数)

JAVASCRIPT 代码复制
  1. var 精灵 = new Sprite()
  2. 为精灵注册监视器(精灵)
  3. 精灵.存活时间 = 0
  4. 精灵.监视器.存活时间计数 = function () {
  5.     Graphics.frameCount % 60 == 0 ? console.log("精灵已存活时间:", ++精灵.存活时间) : null
  6. }
  7. SceneManager._scene.addChild(精灵)


其它

使用中文函数的前提:.js文件的字符编码格式为UTF-8
如果担心中文函数造成崩坏,请自行翻译为英文(雾
可通过修改Sprite.prototype.initialize函数,实现自动为每个精灵添加监视器机制(本帖就不说如何实现了,请自行研究)
作者: 夏末渐离    时间: 2016-1-29 12:51
哎哟。不错哟
作者: 汪汪    时间: 2016-1-29 21:23
中文函数的缺陷就是.....有的时候想要加一个字.......
然后,挺好的...虽然不大会用到




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1