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

Project1

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

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

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9039
在线时间
1932 小时
注册时间
2016-6-19
帖子
364
跳转到指定楼层
1
发表于 2018-6-15 01:31:52 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

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

Lv4.逐梦者

梦石
0
星屑
9039
在线时间
1932 小时
注册时间
2016-6-19
帖子
364
2
 楼主| 发表于 2018-6-15 19:55:38 | 显示全部楼层
soulsaga 发表于 2018-6-15 13:08
你这个好像是更改图像的色调而不是色相..
下面这段代码是事件脚本读取图像和色相后显示图像

多谢指教!
不过这样显示出的图片不能定义编号和位置等等是吗?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9039
在线时间
1932 小时
注册时间
2016-6-19
帖子
364
3
 楼主| 发表于 2018-6-15 20:52:18 | 显示全部楼层
soulsaga 发表于 2018-6-15 20:20
不需要编号..和其他图片没有冲突..
位置修改
sprite.x

有效果了,不过由于目前我的工程量的原因...如果想在showPicture的参数里加一个hue,大致要从哪里入手呢?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9039
在线时间
1932 小时
注册时间
2016-6-19
帖子
364
4
 楼主| 发表于 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显示图片,那对于我这个几乎完全由图片构成的工程来说就趋于灾难了...
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9039
在线时间
1932 小时
注册时间
2016-6-19
帖子
364
5
 楼主| 发表于 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

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9039
在线时间
1932 小时
注册时间
2016-6-19
帖子
364
6
 楼主| 发表于 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

点评

我用的版本还是1.01..哪里有1.5?  发表于 2018-6-16 15:23
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9039
在线时间
1932 小时
注册时间
2016-6-19
帖子
364
7
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9039
在线时间
1932 小时
注册时间
2016-6-19
帖子
364
8
 楼主| 发表于 2018-6-17 12:13:21 | 显示全部楼层
soulsaga 发表于 2018-6-17 12:01
除了读取还有其他方法改变色相么..

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-4 09:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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