Project1

标题: 关于脸图载入问题。 [打印本页]

作者: 夏末渐离    时间: 2015-11-18 15:13
标题: 关于脸图载入问题。
本帖最后由 夏末渐离 于 2015-11-18 15:24 编辑

新人想实现一个抬头显视窗口【HUD】。但是在绘制脸图的时候出了点毛病。


一。直接开始游戏到游戏画面,HUD窗口上没有脸图出现。如下图:





二。然而按ESC呼出游戏菜单,然后关闭游戏菜单就完成了对脸图的绘制。如下图:







三。Window_HUD 代码如下:
Window_HUD




四。在Scene_Map中创建HUD窗口:

Scene_Map



总结:总觉得少了载入脸图的函数,但是不知道如何修改。
作者: dc1988123    时间: 2015-11-18 23:25
本帖最后由 dc1988123 于 2015-11-19 00:00 编辑

估计刷新指令问题吧,下面插个refresh();试试
this.addWindow(this.hud);
this.hud.refresh();
我不懂脚本,只是瞎说的,希望能有用。。
作者: 夏末渐离    时间: 2015-11-22 18:42
本帖最后由 夏末渐离 于 2015-11-23 15:09 编辑

看来是脸图没有那么快读出来,有一定的延时。
作者: 汪汪    时间: 2015-11-22 20:03
本帖最后由 汪汪 于 2016-2-2 01:13 编辑
主要是脸图没准备好的问题,这里参考的是Window_Message里的写法..


//果然还是要读默认脚本啊 T_T
  1. Window_Base.prototype.drawFace = function(faceName, faceIndex, x, y, width, height) {
  2.     width = width || Window_Base._faceWidth;
  3.     height = height || Window_Base._faceHeight;
  4.     var bitmap = ImageManager.loadFace(faceName);
  5.     var pw = Window_Base._faceWidth;
  6.     var ph = Window_Base._faceHeight;
  7.     var sw = Math.min(width, pw);
  8.     var sh = Math.min(height, ph);
  9.     var dx = Math.floor(x + Math.max(width - pw, 0) / 2);
  10.     var dy = Math.floor(y + Math.max(height - ph, 0) / 2);
  11.     var sx = faceIndex % 4 * pw + (pw - sw) / 2;
  12.     var sy = Math.floor(faceIndex / 4) * ph + (ph - sh) / 2;
  13.     bitmap.addLoadListener(
  14.             this.contents.blt.bind(this.contents,bitmap, sx, sy, sw, sh, dx, dy)
  15.     );
  16. };
复制代码
更新一下方法......
作者: 夏末渐离    时间: 2015-11-23 15:18
加快一次载入脸图过程,成功实现了预期效果。







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