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

Project1

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

[已经解决] RMXP 里能运算颜色吗?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2011-5-18
帖子
37
跳转到指定楼层
1
发表于 2013-10-9 22:33:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

比如我现在有个变量, a,是一个有着很多可能性的颜色值,
如何得到一个新的颜色,

比如我只在 red 里面减去 100,使这个颜色偏向 绿色或蓝色,
我只在 alpha 里减去 100,使得这个颜色变暗,

然后我再输出这个颜色,以便使用。
F1 里,和论坛里都找不到这样的方法。
求楼下解答

点评

F1里我已经找到了,搜索color。  发表于 2013-10-9 22:54
踏上寻找灵魂归宿之旅。

Lv5.捕梦者

梦石
0
星屑
31959
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

2
发表于 2013-10-9 22:48:19 | 只看该作者
要随时改变颜色,比如LZ说的那两个地方,用变量 1 和 2 来控制。

首先初始化:
$game_variables[1] = $game_variables[2] = 255

然后窗口描绘的地方

self.contents.font.color = Color.new($game_variables[1], 255, 255, $game_variables[2])
self.contents.draw_text(x, y, w, h, 需要描绘的东西)


改变颜色时(LZ 的例子)

$game_variables[1] -= 100
$game_variables[2] -= 100

最后刷新描绘的窗口即可。

评分

参与人数 1星屑 +75 收起 理由
myownroc + 75 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

3
发表于 2013-10-9 22:54:46 | 只看该作者
获得颜色的方法:
variable = Color.new(Red,Green,Blue,opacity)
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2011-5-18
帖子
37
4
 楼主| 发表于 2013-10-9 23:03:38 | 只看该作者
本帖最后由 lucifer4223 于 2013-10-9 23:12 编辑

这么快啊,你们真牛。不过好像对的啊,

比如我现在有一个 item_name_color = red_color , red_color = Color.new(255,0,0)

我要让这个 item_name_color 临时变成 255,255,0  怎么变法?

我总得得到当前  item_name_color,获得一个 ( r, g, b, a),然后对其某个值修改,类似 (255,0,0) + (0,255,0)

坐等!
踏上寻找灵魂归宿之旅。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2011-5-18
帖子
37
5
 楼主| 发表于 2013-10-9 23:17:42 | 只看该作者
也就是说,我不可能在任何地方,将这个 color事先值设置成 Color.new($game_variables[1], 255, 255, $game_variables[2])

按照 2楼讲法,我随便设置一个变量 aaa =bbb =255
Color.new(aaa, 255, 255,bbb)  # 白色

aaa -= 255

Color.new(aaa, 255, 255,bbb)  # 青色

可我要的不是这种功能
踏上寻找灵魂归宿之旅。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2011-5-18
帖子
37
6
 楼主| 发表于 2013-10-10 00:20:50 | 只看该作者
我现在用了这样一个办法,很老土,不过有效,
但还有一点点小问题,希望楼下有高人能解,并热切欢迎有更好的方法
同时对论坛现状挺失望。

# p (-10.888).to_f  # ==>  -10.888
# p "g".to_f  # ==>  0.0 空
#e = x.split(/@/)[3] # "第四"  第 3个@→

class Win_Test < Window_Base
  
  def initialize  # 初始化窗口
    super(200, 200, 400, 200)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  
  def refresh  # 刷新显示
    self.contents.clear
    self.contents.font.size = 14
    col_X = Color.new(111, 33, 77, 224)
   
   
    col_a = col_X.to_s.split(/,/)[0]
   
    # 转出 4个 String,并切割,可是为什么第一个数值拆出来是 0 ??
   
    a = col_a.to_f # 转成 Float
    a += 120
   
   
    col_b = col_X.to_s.split(/,/)[1]
    b = col_b.to_f
    b += 200
    col_c = col_X.to_s.split(/,/)[2]
    c = col_c.to_f
    c -= 20
    col_d = col_X.to_s.split(/,/)[3]
    d = col_d.to_f
    d += 20
   
    col_Y = Color.new( a, b, c, d)
   
   
    self.contents.font.color = col_Y
    self.contents.draw_text(0, 0, 400, 32, "■■ ■■")
    self.contents.draw_text(0, 28, 400, 32, col_Y.to_s)
  end
  
end

点评

不要连帖,可以使用编辑功能  发表于 2013-10-10 00:33

评分

参与人数 1星屑 -50 收起 理由
myownroc -50 连帖

查看全部评分

踏上寻找灵魂归宿之旅。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2011-5-18
帖子
37
受到警告 7
 楼主| 发表于 2013-10-10 01:48:17 | 只看该作者
第一个切割出来的数字并不是 111.000000
所以需要用这样的方法,再转换一下。

  w = col_X.to_s  # 转出 4个 String
    m = w.split(/,/)[0]  # 切割,注意第一个结果是 (111.000000
    col_a = m[1,10]
    a = col_a.to_f
    a+= 100

虽然楼上都没有给出我需要的答案,但还是感谢一下你们的热心。

另外,楼上这个版主,你是不是人啊,是自动程序,还是机器??
说出来的话 很水也就算了,还在那边装逼,什么叫不要连楼啊??
而且不只是一次了!论坛就是给人人们交流的地方,
我的回帖不符合版规,你直接删除好了!



告诉你: 这个帖子我所提的问题,还没有被解决!

评分

参与人数 1星屑 -200 收起 理由
myownroc -200 人身攻击

查看全部评分

踏上寻找灵魂归宿之旅。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
112
在线时间
551 小时
注册时间
2012-8-18
帖子
1429
8
发表于 2013-10-10 12:28:20 | 只看该作者
1.连贴本来就是禁止的,请阁下先阅读版规
2.别着急对论坛失望,大部分大触基本上不来提问区
3.正题:
RGSS中有一个Color类【详见F1-RGSS参考-游戏库-Color】,对颜色的操作就是靠它执行
a = Color.new(255,255,255)#白色
如果想要对他进行操作,一般我们选择这样的办法:
a.red = 200 #红色减弱
a.opacity -= 100 #透明化
之类的
如果想要完全重置:
a.set(0,0,0) #黑色
另外我们要看Color在哪里使用,事实证明主要是在Bitmap类内部
例如Bitmap的点:
a = Bitmap.new(10,10) #10,10大小的位图
a.get_pixel(1,1) #将会返回一个Color代表1,1位置的颜色
a.get_pixel(1,1).red = 200 #这样就可以直接处理那个点
当然还有fill_rect等等方法【详见F1-RGSS参考-游戏库-Bitmap】:
a.fill_rect(1,1,2,2,Color.new(255,0,0)) #将1,1位置的2x2的矩形涂成红色
完毕,谢谢收看,个人看法,有什么不对的地方还请不吝赐教

评分

参与人数 1星屑 +75 收起 理由
myownroc + 75 认可答案

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2013-10-10
帖子
5
9
发表于 2013-10-10 14:23:49 | 只看该作者
感谢 8楼给出了正确解答,不过纠正一下,color_a.opacity -= 100 是错误的,会跳错,应该是 color_a.alpha -= 100
我主要是用在彩色物品字上面的,可以使用的就 亮彩色,不能使用的就 暗彩色。
可惜我不能手动帮你去认可贴认可了。号被封了。

类似像 !=,&&,==,= 之类的,求还有一个值,以及修改它,这些具体的表达式怎么写,
F1 帮助里面根本说得不明确。帮助里连 split 这个词都搜索不到。
论坛版规没什么不好,但版主这种人为操作(删除帖子内容,连提问楼都删除了!)
实在不能认同!你可以当做这里是你的公司,但不是你家!

6年前 6R刚起步的时候,挺好的,现在正统商业化后,反而变成水星了。
一大堆错误的东西没被纠正。
可惜我寿命不够长,也没时间来注册小号去喷谁了。
作为一个版主,请分辨是非,不要丢中国人脸。

点评

禁言期间内容自动屏蔽。我提醒你遵守版规并没恶意,你却骂我  发表于 2013-10-10 15:23
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2013-10-10
帖子
5
10
发表于 2013-10-10 15:41:56 | 只看该作者
lucifer2222 发表于 2013-10-10 14:23
感谢 8楼给出了正确解答,不过纠正一下,color_a.opacity -= 100 是错误的,会跳错,应该是 color_a.alpha  ...

算了,看来是误会。向你道歉,是我火气大了,话多了,该讲不该讲的都说了。对不起了。

点评

。。。下不为例,版主提醒用户不违反版规是版主的义务,请多支持。  发表于 2013-10-10 15:49
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 00:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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