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

Project1

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

[讨论] 为什么RM里面关于颜色代码的设置不用16位进制8位编码

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2018-1-7 23:46:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
看到的大部分都是Color.new(r,g,b,a)
但是并没有看到#AARRGGBB这样的8位16进制编码
感到有点奇怪

点评

已实现……见sep window_message  发表于 2018-1-8 01:45
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv4.逐梦者

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

7
发表于 2018-1-9 00:44:40 | 只看该作者
本帖最后由 SixRC 于 2018-1-9 18:50 编辑

重点不在于十六进制或者十进制而在于是否拆成rgba吧
因为十进制或十六进制只是表示问题(ruby解释上不清楚)
以ruby (xp)来论
ruby的对象在内存里分几种
ruby的整数其实只能保存31位 因为最小位为了判别而存在
是立即数就是1 否则不是false true nil 就是一个指针(内存地址必然是4字节对齐)
所以ruby保存一个数比方0xFFFFFFFF 就需要用到bignum
所以假如颜色作为一个整体而存在 在内存里不可能是立即数
也即需要用指针表示它是一个颜色对象 (之后的对象特指需要指针的)
现在假设它有一个属性就是颜色值 这个属性的类型也不确定
可能是整数 可能是长整数
读取写入的时候很不方便
即使统一转换成长整数在使用上不一定效率好多少
因为长整数又是对象不是立即数
修改得多通过起码一层指针
改单一元素也得单独抽出来算好再放回去

而拆成rgba很简单
只要开辟16字节 就是四个ruby立即数
修改颜色也方便 要改哪个要素改哪个
作为整体读取的时候也就是位移一下加一下

这些都是纸上谈兵 没试过也不清楚rgss怎么处理的 明天或许会看一下
更新 储存格式是四个挨着的浮点数rgba 不过好像浮点不浮点没啥用吧..

不过我觉得颜色类不管怎么处理 效率都不会差多少吧
渲染图片显示的时候和颜色类无关
想不到什么地方会大量新建颜色类使用颜色类
所以最后的选择肯定是哪个方便用哪个吧?

个人意见 仅作参考

点评

我指设计和实现上吧 结构简单  发表于 2018-1-11 01:17
你指的簡單是針對使用者好使用還是程序好理解  发表于 2018-1-10 23:22
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
558
在线时间
377 小时
注册时间
2012-7-10
帖子
1283
6
发表于 2018-1-8 18:32:37 | 只看该作者
索性rm内部直接写16进制的脚本

点评

本来就可以写···  发表于 2018-1-8 19:06
太久没有来6R了,都是新面孔啊。
帮忙宣传游戏ing,虽说不常上线。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

5
发表于 2018-1-8 15:19:27 | 只看该作者
编辑器就用的RGB,这个可读性强方便调整,写个十六进制鬼知道是什么颜色

点评

不管哪个写法,你不知道是什么颜色的还是不知道是什么颜色···比如说DarkMagenta和MediumPurple之类的···给出哪种都不知道哪个是哪个···还是要去查表细调   发表于 2018-1-8 19:06
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33559
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
发表于 2018-1-8 08:42:06 | 只看该作者
本帖最后由 芯☆淡茹水 于 2018-1-8 19:26 编辑

用对象不是要方便很多么!

color = Color.new(255,255,255)

红 减去 20 :color.red -= 20

var color = '#ffffff'

红 减去 20 ,怎么减方便?

@SailCat    难道不可以直接这样么:
Color.new(self[1..2].to_i(16),self[3..4].to_i(16),self[5..6].to_i(16),self[7..8] == "" ? 255 : self[7..8].to_i(16))

点评

to_c是转什么···to_char?  发表于 2018-1-8 19:08
↓ JS的,没有 Color 。比较方便的也只能代入数组参数取得 rgb 颜色。  发表于 2018-1-8 18:55
别点评主楼了···我没权限回不了  发表于 2018-1-8 09:44
'#ffffff'.to_c..然后class String;def to_c;self[/#([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])?/];Color.new($1.to_i(16),$2.to_i(16,$3.to_i(16),$4?$4.to_i(16):255);end;end  发表于 2018-1-8 09:30
那就RR-14咯···  发表于 2018-1-8 09:21
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1357
在线时间
677 小时
注册时间
2009-11-11
帖子
2790
3
发表于 2018-1-8 01:28:14 | 只看该作者
那是网站用的颜色吧,RM没必要兼容网站

点评

不啊。。。ps一样也有  发表于 2018-1-8 08:23

嘿。嘿。嘿
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
24004
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2018-1-8 01:22:22 | 只看该作者
Color.new('11223344'.scan(/../).map{|s| s.to_i(16)})

点评

默认脚本把十六进制的这样做就行了吗?那写的时候不用这个是因为效率还是说单纯为了修改方便才用4个十进制···  发表于 2018-1-8 08:21
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-12 10:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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