Project1

标题: JS脚本问题 [打印本页]

作者: kula1900    时间: 2017-3-8 14:56
标题: JS脚本问题
本帖最后由 kula1900 于 2017-3-8 15:13 编辑

事件中插入脚本 Scene_Map.prototype.DbgPrint("message", 1);
调用出现问题
如果不调用脚本
窗口会显示,人物也可以移动,会出现 debug 字样,可就是需要输出调试信息时报错。

JAVASCRIPT 代码复制
  1. function Window_Debug()
  2. {
  3.         this.initialize.apply(this, arguments);
  4. }
  5.  
  6. Window_Debug.prototype = Object.create(Window_Selectable.prototype);
  7.  
  8. Window_Debug.prototype.initialize = function(x, y, width, height) {
  9.     Window_Selectable.prototype.initialize.call(this, x, y, width, height);   // 调用基类 Window_Selectable initialize
  10. }
  11.  
  12. // 覆盖 SceneMap
  13. var pfnOldSceneMapCreate = Scene_Map.prototype.create;
  14.  
  15. Scene_Map.prototype.create = function() {
  16.     pfnOldSceneMapCreate.call(this);
  17.         this.debugWnd = new Window_Debug(0, 0, 400, 200);
  18.     // this.addWindow(this.debugWnd);
  19. };
  20.  
  21. var pfnOldSceneMaponMapLoaded = Scene_Map.prototype.onMapLoaded;
  22. Scene_Map.prototype.onMapLoaded = function() {
  23.     pfnOldSceneMaponMapLoaded.call(this);
  24.         this.addWindow(this.debugWnd);
  25.         alert(this.debugWnd);
  26.         this.ClearDebug();
  27. };
  28.  
  29. Scene_Map.prototype.DbgPrint = function(str, row) {
  30.         alert(this.debugWnd);
  31.         this.debugWnd.drawText(str, 0, row * 40, 400, 'left');
  32. };
  33.  
  34. Scene_Map.prototype.ClearDebug = function(){
  35.         this.debugWnd.contents.clear();
  36.         this.debugWnd.drawText("debug", 0, 0, 400, 'left');
  37. }

作者: kula1900    时间: 2017-3-8 15:13
本人成功解决
然而事件中 Secen_Map 并非全局静态类。所以会出现 undefined
事件中需要这么调用:
SceneManager._scene.DbgPrint("message", 1);
// 不知道 JS 是否存在C++ 一样的宏。
作者: a02821145    时间: 2017-3-8 17:06
哈哈,楼主这个问题我前两天也碰到过
问了无数人才解决,正好看到了就分享一下
在编辑器里面调用脚本函数时,不要加prototype这一段
加入这一段会导致你每次调用都是函数的初始状态,而并非当前状态
作者: shitake    时间: 2017-3-8 17:35
所以为啥好好的 console 和 devtool 你不用 要自己折腾
作者: kula1900    时间: 2017-3-8 17:42
console??不会呀....
作者: kula1900    时间: 2017-3-8 17:42
shitake 发表于 2017-3-8 17:35
所以为啥好好的 console 和 devtool 你不用 要自己折腾

console??不会呀....
作者: aasll    时间: 2017-3-9 08:53
kula1900 发表于 2017-3-8 17:42
console??不会呀....

console.log()
f8教做人




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