Project1

标题: 如何让窗口在游戏过程中一直显示同时不会影响游戏的... [打印本页]

作者: alexcyk    时间: 2016-6-6 09:26
标题: 如何让窗口在游戏过程中一直显示同时不会影响游戏的...
代码很简单,就是在窗口中显示一个变量的值和主角的HP值:
JAVASCRIPT 代码复制
  1. function Window_Testing(){
  2. this.initialize.apply(this,arguments);
  3. }
  4. Window_Testing.prototype=Object.create(Window_Selectable.prototype);
  5. Window_Testing.prototype.initialize=function(x,y,width,height){
  6. Window_Selectable.prototype.initialize.call(this,x,y,width,height);
  7. this.drawSomeText();
  8. }
  9.  
  10. Window_Testing.prototype.drawSomeText=function(){
  11. var actor=$gameActors.actor(1);
  12.  
  13.     var textW = 360;
  14.     var textH = 0;
  15.     this.contents.clear();
  16.     this.drawText("持有的生命之石:"+$gameVariables.value(11)+"/10", 0, textH, textW, 'right');
  17.     textH += this.lineHeight();
  18.     this.drawText(actor._name+"的生命值为:"+actor.hp+"/"+actor.mhp, 0, textH, textW, 'right');
  19.  
  20. }
  21.  
  22. function Scene_Testing(){
  23. this.initialize.apply(this,arguments);
  24. }
  25. Scene_Testing.prototype=Object.create(Scene_MenuBase.prototype);
  26. Scene_Testing.prototype.initialize=function(){
  27. Scene_MenuBase.prototype.initialize.call(this);
  28. };
  29.  
  30. Scene_Testing.prototype.create=function(){
  31. Scene_MenuBase.prototype.create.call(this);
  32. this._commandWindow=new Window_Testing(0,480,400,110);
  33. this.addWindow(this._commandWindow);
  34. };
  35.  
  36. Scene_Testing.prototype.update=function(){
  37. /*这里该怎么写才能让该窗口在游戏过程中一直显示同时不会影响游戏的进程*/
  38. SceneManager.goto(Scene_Map);
  39. };

在事件页调用该脚本

窗口会不停闪烁。请教高手们,该怎样写才能实现该窗口在游戏过程中一直显示同时不会影响游戏的进程,谢谢。

让窗口显示而不影响游戏.jpg (152.18 KB, 下载次数: 18)

事件页

事件页

作者: 米大湿    时间: 2016-6-6 12:39
  1. (function(){

  2. var rice_scene_start = Scene_Map.prototype.start;
  3. Scene_Map.prototype.start = function() {
  4.   rice_scene_start.call(this);
  5.   this.riceWindow = new riceWindow(0, 668);
  6.   this.addWindow(this.riceWindow);


  7. };

  8. function riceWindow(){

  9. this.initialize.apply(this, arguments);

  10. };

  11. riceWindow.prototype = Object.create(Window_Base.prototype);
  12. riceWindow.prototype.constructor = riceWindow;

  13.    

  14. riceWindow.prototype.initialize = function(x, y){
  15. Window_Base.prototype.initialize.call(this, x, y, 800, 120);

  16.    
  17. };

  18. riceWindow.prototype.update = function(){
  19.     var actor = $gameActors.actor(1);
  20.         var textW = 360;
  21.     var textH = 0;
  22.     this.contents.clear();
  23.     this.drawText("持有的生命之石:" + $gameVariables.value(11)+"/10", 0, textH, textW, 'left');
  24.     textH += this.lineHeight();
  25.     this.drawText(actor._name +"的生命值为:" + actor.hp+"/"+actor.mhp, 0, textH, textW, 'left');

  26. };



  27. })()
复制代码

作者: 米大湿    时间: 2016-6-6 12:44
根本不需要事件页调用脚本。。。
作者: alexcyk    时间: 2016-6-6 15:56
米大湿 发表于 2016-6-6 12:44
根本不需要事件页调用脚本。。。

确实,在插件管理器让插件为on就行,不过采用上面的代码游戏运行时没有显示窗口,最后面加上;也不行,我把代码改成
  1. (function() {
  2. function Window_Testing(){
  3. this.initialize.apply(this,arguments);
  4. };
  5. Window_Testing.prototype=Object.create(Window_Selectable.prototype);
  6. Window_Testing.prototype.initialize=function(x,y,width,height){
  7. Window_Selectable.prototype.initialize.call(this,x,y,width,height);

  8. };


  9. function Scene_Testing(){
  10. this.initialize.apply(this,arguments);
  11. };
  12. Scene_Testing.prototype=Object.create(Scene_MenuBase.prototype);
  13. Scene_Testing.prototype.initialize=function(){
  14. Scene_MenuBase.prototype.initialize.call(this);
  15. };

  16. Scene_Testing.prototype.create=function(){
  17. Scene_MenuBase.prototype.create.call(this);
  18. this._commandWindow=new Window_Testing(0,480,400,110);
  19. this.addWindow(this._commandWindow);

  20. };

  21. Scene_Testing.prototype.update=function(){
  22. var actor=$gameActors.actor(1);
  23.    
  24.     var textW = 360;
  25.     var textH = 0;
  26.     this.contents.clear();
  27.     this.drawText("持有的生命之石:"+$gameVariables.value(11)+"/10", 0, textH, textW, 'right');
  28.     textH += this.lineHeight();
  29.     this.drawText(actor._name+"的生命值为:"+actor.hp+"/"+actor.mhp, 0, textH, textW, 'right');
  30. };
  31. })();
复制代码
也不行,不知道出错在哪里。
作者: 米大湿    时间: 2016-6-6 16:16
请自行修改窗口大小和坐标 我代码里初设的窗口y是668 因为我的游戏分辨率是1280x768
如果是默认分辨率请自行修改
作者: 米大湿    时间: 2016-6-6 16:23
this.riceWindow = new riceWindow(0, 668);
改成
this.riceWindow = new riceWindow(0, 0);
作者: 米大湿    时间: 2016-6-6 16:25
还有就是 你的代码不知道哪里抄来的 还是自己乱拼凑的,问题太多,我就不多说了- -
最后那个;无需加
作者: 米大湿    时间: 2016-6-6 16:29
还有就是MV版本最好更新至1.2.0 = =
因为新版本的系统JS有大改动
作者: alexcyk    时间: 2016-6-7 21:09
米大湿 发表于 2016-6-6 16:23
this.riceWindow = new riceWindow(0, 668);
改成
this.riceWindow = new riceWindow(0, 0);

非常感谢,我是在别人的代码的基础上做的修改。你的代码确实可以用,我自己的修改了一下,也可以用了。再次感谢!
  1. (function() {
  2. Scene_Map.prototype.start=function(){
  3. Scene_Base.prototype.start.call(this);
  4. this.Scene_Testing=new Window_Testing(0,480,400,110);
  5. this.addWindow(this.Scene_Testing);
  6. };
  7. function Window_Testing(){
  8. this.initialize.apply(this,arguments);
  9. };
  10. Window_Testing.prototype=Object.create(Window_Selectable.prototype);
  11. Window_Testing.prototype.initialize=function(x,y,width,height){
  12. Window_Selectable.prototype.initialize.call(this,x,y,width,height);
  13. };

  14. Window_Testing.prototype.update=function(){
  15.     var actor=$gameActors.actor(1);
  16.     var textW = 360;
  17.     var textH = 0;
  18.     this.contents.clear();
  19.     this.drawText("持有的生命之石:"+$gameVariables.value(11)+"/10", 0, textH, textW, 'right');
  20.     textH += this.lineHeight();
  21.     this.drawText(actor._name+"的生命值为:"+actor.hp+"/"+actor.mhp, 0, textH, textW, 'right');
  22. };
  23. })();
复制代码
我的版本1.01也能正确显示。

窗口显示且不影响游戏.jpg (285.78 KB, 下载次数: 22)

窗口显示且不影响游戏

窗口显示且不影响游戏

作者: kit0072    时间: 2016-6-10 11:48
请问如果想关闭视窗要怎样做?
有没有OFF插件的语法? 还是只能在插件中加入if then 语法?
作者: alexcyk    时间: 2016-6-12 10:11
kit0072 发表于 2016-6-10 11:48
请问如果想关闭视窗要怎样做?
有没有OFF插件的语法? 还是只能在插件中加入if then 语法? ...

我试了好久,无论是采用插件,还是直接添加if语句,都没成功。




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