Project1

标题: [菜单绘制]绘制脸图的方法 [打印本页]

作者: dujian15    时间: 2015-12-25 15:56
标题: [菜单绘制]绘制脸图的方法
各位代码大神:

请问在新建的窗口中绘制脸图的思路如何?

我的想法是

首先建立一个windows对象,写好一些基础的初始化函数

建立sence场景,供游戏事件接调用。


万事俱备后,我开始写代码。

通过读原来的脚本,我知道

$gameParty.members()[index]
是你队伍人员的名字

那么var actor = $gameParty.members()[0]
//想必这就是主角了。

下面我想在窗口中显示主角的头像,

是不是应该在我新建的窗口对象下调用

this.drawActorFace(actor, 300, 300);


但是切到游戏里,打开窗口,并不显示,这是为什么?


如果我说得不清楚,我愿意贴出代码。

作者: taroxd    时间: 2015-12-25 16:07
请确保在调用 this.drawActorFace(actor, 300, 300); 这句之前,那张脸图已经加载完成。

你可以参考一下 Window_Message 里面画出脸图的方式以及 Window_Message.prototype.updateLoading 等一些方法里面对于 _faceBitmap 的处理。

作者: dujian15    时间: 2015-12-25 16:17
taroxd 发表于 2015-12-25 16:07
请确保在调用 this.drawActorFace(actor, 300, 300); 这句之前,那张脸图已经加载完成。

你可以参考一下 W ...

惊动版主大人。

那么我新建菜单窗口,可以直接绘制脸图么?
作者: dujian15    时间: 2015-12-25 16:18
菜单中的脸图应该是已经直接载入完成了吧
作者: tseyik    时间: 2015-12-25 16:30
dujian15 发表于 2015-12-25 16:18
菜单中的脸图应该是已经直接载入完成了吧

TkoolMV_PluginCommandBook.js
https://github.com/AlecYawata/TkoolMV_PluginCommandBook
* 圖片読入(English:Load_Picture)(插件命令中使用)
*  指定圖片事前に読入。
*  製作者 トリアコンタン
*
*  パラメータ
*   ファイル名(拡張子は指定しないでください)
*
*  使用例
*  ピクチャの読み込み filename
*  Load_Picture filename
* ===========================
作者: taroxd    时间: 2015-12-25 16:57
dujian15 发表于 2015-12-25 16:18
菜单中的脸图应该是已经直接载入完成了吧


只有 Window_MenuStatus 和 Window_Message 载入了脸图。

你可以在 rpg_windows.js 里搜索 loadFace 来查看。


啊对了,你给 drawActorFace 少传了两个参数
作者: trentswd    时间: 2015-12-25 17:35
简单的思路就是bitmap的listener里面加窗口的refresh。另外讲真这个建议你把rpg_core里面的window以及rpg_windows里面的常用window看一看
作者: dujian15    时间: 2015-12-25 21:44
感谢各位,其实我最终是想做几个视频,分析一下游戏的架构,以及一些简单的脚 本的入门。

掌握架构之后基本上就是设计的事儿了。

js的脚本语言好处就是自由度感觉高了不少,甚至可以改变游戏的核心玩法。

期待大神们的教程出炉哈。
作者: 汪汪    时间: 2015-12-25 22:02
Window_Base.prototype.drawFace = function(faceName, faceIndex, x, y, width, height) {
    width = width || Window_Base._faceWidth;
    height = height || Window_Base._faceHeight;
    var bitmap = ImageManager.loadFace(faceName);
    var pw = Window_Base._faceWidth;
    var ph = Window_Base._faceHeight;
    var sw = Math.min(width, pw);
    var sh = Math.min(height, ph);
    var dx = Math.floor(x + Math.max(width - pw, 0) / 2);
    var dy = Math.floor(y + Math.max(height - ph, 0) / 2);
    var sx = faceIndex % 4 * pw + (pw - sw) / 2;
    var sy = Math.floor(faceIndex / 4) * ph + (ph - sh) / 2;
    this.contents.blt(bitmap, sx, sy, sw, sh, dx, dy);
};

我的方法是改成bug未知

Window_Base.prototype.drawFace = function(faceName, faceIndex, x, y, width, height) {
    width = width || Window_Base._faceWidth;
    height = height || Window_Base._faceHeight;
    var bitmap = ImageManager.loadFace(faceName);
    var pw = Window_Base._faceWidth;
    var ph = Window_Base._faceHeight;
    var sw = Math.min(width, pw);
    var sh = Math.min(height, ph);
    var dx = Math.floor(x + Math.max(width - pw, 0) / 2);
    var dy = Math.floor(y + Math.max(height - ph, 0) / 2);
    var sx = faceIndex % 4 * pw + (pw - sw) / 2;
    var sy = Math.floor(faceIndex / 4) * ph + (ph - sh) / 2;
   // this.contents.blt(bitmap, sx, sy, sw, sh, dx, dy)
    bitmap.addLoadListener(
           this.contents.blt.bind(this.contents ,bitmap, sx, sy, sw, sh, dx, dy)
    );
};




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