查看: 5061|回复: 10

[已经解决] 如何让窗口在游戏过程中一直显示同时不会影响游戏的...

[复制链接]
梦石
0
星屑
129
在线时间
65 小时
注册时间
2015-10-31
回帖
27
发表于 2016-6-6 09:26:10 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
代码很简单,就是在窗口中显示一个变量的值和主角的HP值:
[pre lang="javascript" line="1"]function Window_Testing(){
this.initialize.apply(this,arguments);
}
Window_Testing.prototype=Object.create(Window_Selectable.prototype);
Window_Testing.prototype.initialize=function(x,y,width,height){
Window_Selectable.prototype.initialize.call(this,x,y,width,height);
this.drawSomeText();
}

Window_Testing.prototype.drawSomeText=function(){
var actor=$gameActors.actor(1);
   
    var textW = 360;
    var textH = 0;
    this.contents.clear();
    this.drawText("持有的生命之石:"+$gameVariables.value(11)+"/10", 0, textH, textW, 'right');
    textH += this.lineHeight();
    this.drawText(actor._name+"的生命值为:"+actor.hp+"/"+actor.mhp, 0, textH, textW, 'right');
   
}

function Scene_Testing(){
this.initialize.apply(this,arguments);
}
Scene_Testing.prototype=Object.create(Scene_MenuBase.prototype);
Scene_Testing.prototype.initialize=function(){
Scene_MenuBase.prototype.initialize.call(this);
};

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

Scene_Testing.prototype.update=function(){
/*这里该怎么写才能让该窗口在游戏过程中一直显示同时不会影响游戏的进程*/
SceneManager.goto(Scene_Map);
};[/pre]
在事件页调用该脚本

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

事件页

事件页
梦石
0
星屑
153
在线时间
723 小时
注册时间
2014-4-10
回帖
126
发表于 2016-6-6 12:39:14 | 显示全部楼层
  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. })()
复制代码
回复

使用道具 举报

梦石
0
星屑
153
在线时间
723 小时
注册时间
2014-4-10
回帖
126
发表于 2016-6-6 12:44:20 | 显示全部楼层
根本不需要事件页调用脚本。。。
回复

使用道具 举报

梦石
0
星屑
129
在线时间
65 小时
注册时间
2015-10-31
回帖
27
 楼主| 发表于 2016-6-6 15:56:02 | 显示全部楼层
米大湿 发表于 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. })();
复制代码
也不行,不知道出错在哪里。
回复

使用道具 举报

梦石
0
星屑
153
在线时间
723 小时
注册时间
2014-4-10
回帖
126
发表于 2016-6-6 16:16:33 | 显示全部楼层
请自行修改窗口大小和坐标 我代码里初设的窗口y是668 因为我的游戏分辨率是1280x768
如果是默认分辨率请自行修改
回复

使用道具 举报

梦石
0
星屑
153
在线时间
723 小时
注册时间
2014-4-10
回帖
126
发表于 2016-6-6 16:23:18 | 显示全部楼层
this.riceWindow = new riceWindow(0, 668);
改成
this.riceWindow = new riceWindow(0, 0);
回复

使用道具 举报

梦石
0
星屑
153
在线时间
723 小时
注册时间
2014-4-10
回帖
126
发表于 2016-6-6 16:25:25 | 显示全部楼层
还有就是 你的代码不知道哪里抄来的 还是自己乱拼凑的,问题太多,我就不多说了- -
最后那个;无需加
回复

使用道具 举报

梦石
0
星屑
153
在线时间
723 小时
注册时间
2014-4-10
回帖
126
发表于 2016-6-6 16:29:33 | 显示全部楼层
还有就是MV版本最好更新至1.2.0 = =
因为新版本的系统JS有大改动
回复

使用道具 举报

梦石
0
星屑
129
在线时间
65 小时
注册时间
2015-10-31
回帖
27
 楼主| 发表于 2016-6-7 21:09:46 | 显示全部楼层
米大湿 发表于 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也能正确显示。

窗口显示且不影响游戏

窗口显示且不影响游戏
回复

使用道具 举报

梦石
0
星屑
50
在线时间
33 小时
注册时间
2010-9-5
回帖
3
发表于 2016-6-10 11:48:26 | 显示全部楼层
请问如果想关闭视窗要怎样做?
有没有OFF插件的语法? 还是只能在插件中加入if then 语法?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部