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

Project1

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

[有事请教] 如何处理图片的色相

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9059
在线时间
1934 小时
注册时间
2016-6-19
帖子
364
跳转到指定楼层
1
发表于 2018-6-15 01:31:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
萌新想用变量来表达图片色相,使得角色立绘能够自定义。不过目前有两个问题:
showPicture脚本没有表示色相的参数,只能用$Game_Picture.prototype.initTone,问题是这个脚本像图片旋转一样需要持续时间,不能即时表达;
显示出来的图片不只修改有色调的部分,更像是蒙了一层颜色滤镜,导致图片的黑色部分也跟着一块变色了...
有什么解决方法吗?

Lv4.逐梦者

梦石
0
星屑
9059
在线时间
1934 小时
注册时间
2016-6-19
帖子
364
15
 楼主| 发表于 2018-6-17 12:13:21 | 只看该作者
soulsaga 发表于 2018-6-17 12:01
除了读取还有其他方法改变色相么..

也是,那些即时更改色相的图片可能只是加了滤镜一类的吧
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36437
在线时间
10798 小时
注册时间
2009-3-15
帖子
4814
14
发表于 2018-6-17 12:01:48 | 只看该作者
康姆图帕帕 发表于 2018-6-17 11:26
我又来劳烦了,首先对之前的帮助再次表达感谢
为了让图片在色相变化时能即时更新,我又加了一段 ...

除了读取还有其他方法改变色相么..
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9059
在线时间
1934 小时
注册时间
2016-6-19
帖子
364
13
 楼主| 发表于 2018-6-17 11:26:34 | 只看该作者
soulsaga 发表于 2018-6-16 17:52
Sprite_Picture.prototype.updateBitmap = function() {
    var picture = this.picture();
    if (pictu ...

我又来劳烦了,首先对之前的帮助再次表达感谢
为了让图片在色相变化时能即时更新,我又加了一段判断

Sprite_Picture.prototype.updateBitmap = function() {
    var picture = this.picture();
    if (picture) {
        var pictureName = picture.name();
        if (this._pictureName !== pictureName) {
            this._pictureName = pictureName;
            this._hue = picture.hue();
            this.loadBitmap();
        }
        if (this._pictureName == pictureName) {
            this._hue = picture.hue();
            this.loadBitmap();
        }
        this.visible = true;

    } else {
        this._pictureName = '';
        this.bitmap = null;
        this.visible = false;
    }
};
虽然达到了目的,不过我发现色相的变化似乎是必须要进行一次loadBitmap()的,导致的问题就是整个图片在更新色相时会闪烁,不像更新位置、透明度时那么流畅。
而把this._hue = picture.hue() 放在其他update图片参数下面似乎是无效的,因为没有loadBitmap()...?
所以在MV中,色相更新必须要重加载图片?这可能是一个无法避免的问题?
不过这个问题不算大,我大概可以掩饰过去XDDD
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36437
在线时间
10798 小时
注册时间
2009-3-15
帖子
4814
12
发表于 2018-6-16 17:52:38 | 只看该作者
本帖最后由 soulsaga 于 2018-6-16 18:09 编辑

Sprite_Picture.prototype.updateBitmap = function() {
    var picture = this.picture();
    if (picture) {
        var pictureName = picture.name();
        if (this._pictureName !== pictureName) {
            this._pictureName = pictureName;
            this._hue = picture.hue();
            this.loadBitmap();
        }
        this.visible = true;
    } else {
        this._pictureName = '';
        this.bitmap = null;
        this.visible = false;
    }
};

研究出来了..还有rpg_sprites.js这里要改..
亲测成功..
这样色相值就可以传到读取图片那了..

评分

参与人数 1+1 收起 理由
康姆图帕帕 + 1 评分上限1就很可惜,我真的想说点肉麻的了X.

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9059
在线时间
1934 小时
注册时间
2016-6-19
帖子
364
11
 楼主| 发表于 2018-6-16 15:14:35 | 只看该作者
soulsaga 发表于 2018-6-16 14:10
换了你这个脚本会报错啊..没法测试..
随便给个你改过的默认工程研究下..是不是我MV版本旧了?
其实你也改得 ...

我的是MV1.5.1,升过一次1.6结果崩了
this._hue加了无效,可能是因为sprites里给this.hue赋值的是picture.hue()。
而色相的计算是在core里的Bitmap.prototype.rotateHue下面进行的,manager里图片也是调用的bitmap.rotateHue(hue),和Game_Picture一点关系也没有,而且在objects里调用bitmap相关会出错....
我觉得就是objects根本不认识hue这个变量

Project3.zip

1.4 MB, 下载次数: 34

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36437
在线时间
10798 小时
注册时间
2009-3-15
帖子
4814
10
发表于 2018-6-16 14:10:55 | 只看该作者
本帖最后由 soulsaga 于 2018-6-16 14:16 编辑

换了你这个脚本会报错啊..没法测试..
随便给个你改过的默认工程研究下..是不是我MV版本旧了?
其实你也改得差不多了..
rpg_sprites.js脚本里搜
this.bitmap = ImageManager.loadPicture(this._pictureName);
往后加this._hue试试..

评分

参与人数 1+1 收起 理由
康姆图帕帕 + 1 我的是steam上的,不过网上应该有1.5下载吧.

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9059
在线时间
1934 小时
注册时间
2016-6-19
帖子
364
9
 楼主| 发表于 2018-6-16 13:38:29 | 只看该作者
本帖最后由 康姆图帕帕 于 2018-6-16 13:40 编辑

非常感谢
这些是我动过的脚本,实际修改的只有objects,我加了几条hue的条目,可能问题就是如何调用其他脚本的参数了...
showPicture里有一条this._x = x+$gameVariables.value(60);是为其他设计添加的不用在意

$gameScreen.showPicture("1","图片",0,0,0,100,100,255,0)
$gameScreen.showPicture("编号",文件名,原点,x,y,x放大率,y放大率,透明度,合成方式)
是这个吗

js.zip

113.55 KB, 下载次数: 47

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36437
在线时间
10798 小时
注册时间
2009-3-15
帖子
4814
8
发表于 2018-6-16 13:23:34 | 只看该作者
康姆图帕帕 发表于 2018-6-16 13:08
manager里的 ImageManager.loadNormalBitmap 中 rotateHue(hue) 是渲染图片色相的...
core里 Bitmap.prot ...

你可以上传一下你的默认脚本吗..我试试修改..

点评

顺便给我一个showPicture的脚本写法..我不会..  发表于 2018-6-16 13:31
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9059
在线时间
1934 小时
注册时间
2016-6-19
帖子
364
7
 楼主| 发表于 2018-6-16 13:08:55 | 只看该作者
本帖最后由 康姆图帕帕 于 2018-6-16 13:15 编辑
soulsaga 发表于 2018-6-16 12:39
rpg_managers.js脚本里
搜return this.loadBitmap('img/pictures/', filename, hue, true)
不过我不会给s ...


manager里的 ImageManager.loadNormalBitmap 中 rotateHue(hue) 是渲染图片色相的...
core里 Bitmap.prototype.rotateHue 应该是给它下定义的...
然而我怎么都不能在objects里的 showPicture 中调用它们
折腾到天亮,然而只弄明白了这点东西...

如果只能用sprite显示图片,那对于我这个几乎完全由图片构成的工程来说就趋于灾难了...
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 08:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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