Project1

标题: 有关窗口内容绘制的三个问题 [打印本页]

作者: 阿竹天    时间: 2016-1-13 01:18
标题: 有关窗口内容绘制的三个问题
本帖最后由 RyanBern 于 2016-1-13 12:47 编辑

文科生……没有编程基础……
看了《RPG_Maker_XP图文教程 I II III》 和RB大大的《脚本视频教程》目前看完02。
现在遇到三个问题,如下,解决与否都先谢谢以上两位。



状态01和02让我觉得很诡异……为什么状态数值只能显示在蓝色的底板上……如果没有底板就没有文字……
难道是规定了刷新区域?
底板透明度改成0,也还是有白色边框。
第一个问题:想成分段底板,或者没有底板?不知如何实现……

改动

会发现 出现两个箭头……
按我的理解 “- 32”那个值应该是边框宽度,数值减小可视范围就增大,但是会出现箭头……
问题二:能否解释下其规则……

问题三:
那个“self.contents = Bitmap.new(width - 30, height - 30)”到底是引用的什么图片啊……画矩形不是这个命令啊……

请求大家帮助~~
作者: myownroc    时间: 2016-1-13 02:29
本帖最后由 myownroc 于 2016-1-13 11:43 编辑
状态01和02让我觉得很诡异……为什么状态数值只能显示在蓝色的底板上……如果没有底板就没有文字……
难道是规定了刷新区域?
你说的状态是啥……哪些文字确实是“画”在“底板”上的(学名Window,就是窗口)。
第一个问题:想成分段底板,或者没有底板?不知如何实现……
应该是想做到每个人一个状态栏吧……进入战斗画面的时候先数一下有多少个人,然后分配响应的“底板”。至于具体实现,请给众位坛友一点时间……
问题二:能否解释下其规则……
这样吧,我给张图……
打个比方
黑色的部分是画板(对应蓝色的Window),红色的部分是画布(就是那个self.contents,Bitmap.new则是新建一块画布)。
通常,画布都是比画板要小的(生活经验告诉我们的),就像图中右上角那样。
而图中右下角则是画布比画板大……这样,在Window就会出现箭头,提示窗口之外还有内容。
不过,你不属于上面说的那种情况。
因为你已经创建了一个宽度高度分别为width - 32和height - 32的“画布”(Bitmap)。显然,这画布并没有比“画板”(Window)大。

剩下的一种情况就只能是Bitmap的内容超出了Bitmap的范围。
问题三:
那个“self.contents = Bitmap.new(width - 30, height - 30)”到底是引用的什么图片啊……画矩形不是这个命令啊……
那就是一块“画布”让你把文字弄上去的……


本来想打个比方,让楼主看的更明白一点,现在倒是觉得楼主会被我绕进去,囧。


说实话码代码时我会避免这样的情况,反而这种情况出来却解释不清楚了,囧again。

文科生……没有编程基础……
楼主谦虚了……
作者: RyanBern    时间: 2016-1-13 09:52
第一个问题:
这里是通过楼主所说的“底板”来显示说明文字的,如果没有底板文字无法显示。
不过可以更改底板的透明度,让底板隐藏。楼主说改完透明度还是存在白框,那是因为楼主用错了命令。
使用
RUBY 代码复制
  1. self.opacity = 0

而不是
RUBY 代码复制
  1. self.back_opacity = 0

后者只改了背景的不透明度,窗体本身的没改。
第二个问题:
原因就是楼上M解释的那样,出现箭头一定是画布内容比窗口的内容多。正常情况下,画布的四个边界和画板的四个边界应该距离16个像素单位的长度,这样才不会出现箭头。
第三个问题:
解释同上,这个地方不是画矩形,而是为窗口生成所谓“画布”,以供你描绘文字。
作者: 阿竹天    时间: 2016-1-13 11:38
RyanBern 发表于 2016-1-13 09:52
第一个问题:
这里是通过楼主所说的“底板”来显示说明文字的,如果没有底板文字无法显示。
不过可以更改底 ...

原来如此……self.opacity……我差点点就蒙对了……不过是用的self.contents.opacity……,由于最后又个透明度调试意外的做成了进入战斗后,数值渐渐出现的效果……哈哈。
我还在WINDOWS_BASE中给添加了个OPACITY的参数……然后每个报错的地方都加了一个数字进去……发现没有效果……
其实现在我觉得自己是英文太差,看见这些单词反映在脑海的都是字母而不是其含义……继续熟悉之。

最后,多谢你的视频教程及解答!

作者: RyanBern    时间: 2016-1-13 12:15
阿竹天 发表于 2016-1-13 11:38
原来如此……self.opacity……我差点点就蒙对了……不过是用的self.contents.opacity……,由于最后又个 ...

你这样做是可以的,不过如果加opacity参数的话,游戏中所有窗口的透明度都变了,应当小心使用(除非你确定你要这么做)。如果是单独改一个类的窗口那么请在该类initialize方法里面写上self.opacity=XX就好。
另外,一个窗口可以分为“框架”和“内容”,你可以理解为窗口的bitmap是表示窗口内容的,它其实是窗口的一部分。self.contents = Bitmap.new(width - 32, height - 32)的含义是创建一个(width - 32)*(height - 32)的Bitmap,其中width表示窗口总体的宽度,height表示窗口总体的高度。这句话的含义就是创建的bitmap的大小的宽和高要比原窗口的宽高各小32像素。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1