设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5184|回复: 8
打印 上一主题 下一主题

[已经解决] [菜单绘制]绘制脸图的方法

[复制链接]

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
跳转到指定楼层
1
发表于 2015-12-25 15:56:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
各位代码大神:

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

我的想法是

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

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


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

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

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

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

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

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

this.drawActorFace(actor, 300, 300);


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


如果我说得不清楚,我愿意贴出代码。
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-12-25 16:07:35 | 只看该作者
请确保在调用 this.drawActorFace(actor, 300, 300); 这句之前,那张脸图已经加载完成。

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

评分

参与人数 1梦石 +1 收起 理由
余烬之中 + 1 /w\

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
3
 楼主| 发表于 2015-12-25 16:17:26 | 只看该作者
taroxd 发表于 2015-12-25 16:07
请确保在调用 this.drawActorFace(actor, 300, 300); 这句之前,那张脸图已经加载完成。

你可以参考一下 W ...

惊动版主大人。

那么我新建菜单窗口,可以直接绘制脸图么?
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
4
 楼主| 发表于 2015-12-25 16:18:05 | 只看该作者
菜单中的脸图应该是已经直接载入完成了吧
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
23068
在线时间
8648 小时
注册时间
2011-12-31
帖子
3367
5
发表于 2015-12-25 16:30:37 | 只看该作者
dujian15 发表于 2015-12-25 16:18
菜单中的脸图应该是已经直接载入完成了吧

TkoolMV_PluginCommandBook.js
https://github.com/AlecYawata/TkoolMV_PluginCommandBook
* 圖片読入(English:Load_Picture)(插件命令中使用)
*  指定圖片事前に読入。
*  製作者 トリアコンタン
*
*  パラメータ
*   ファイル名(拡張子は指定しないでください)
*
*  使用例
*  ピクチャの読み込み filename
*  Load_Picture filename
* ===========================

评分

参与人数 1星屑 +532 收起 理由
余烬之中 + 532 /w\

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

6
发表于 2015-12-25 16:57:59 | 只看该作者
dujian15 发表于 2015-12-25 16:18
菜单中的脸图应该是已经直接载入完成了吧


只有 Window_MenuStatus 和 Window_Message 载入了脸图。

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


啊对了,你给 drawActorFace 少传了两个参数
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
386 小时
注册时间
2007-7-27
帖子
4106

开拓者

7
发表于 2015-12-25 17:35:33 | 只看该作者
简单的思路就是bitmap的listener里面加窗口的refresh。另外讲真这个建议你把rpg_core里面的window以及rpg_windows里面的常用window看一看

评分

参与人数 1星屑 +166 收起 理由
余烬之中 + 166 /w\

查看全部评分

吸吸
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
8
 楼主| 发表于 2015-12-25 21:44:53 | 只看该作者
感谢各位,其实我最终是想做几个视频,分析一下游戏的架构,以及一些简单的脚 本的入门。

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

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

期待大神们的教程出炉哈。
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
9
发表于 2015-12-25 22:02:07 | 只看该作者
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)
    );
};

评分

参与人数 1星屑 +166 收起 理由
余烬之中 + 166 /w\

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-23 06:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表