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

Project1

 找回密码
 注册会员
搜索

有关窗口内容绘制的三个问题

查看数: 1589 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-1-13 01:18

正文摘要:

本帖最后由 RyanBern 于 2016-1-13 12:47 编辑 文科生……没有编程基础…… 看了《RPG_Maker_XP图文教程 I II III》 和RB大大的《脚本视频教程》目前看完02。 现在遇到三个问题,如下,解决与否都先谢谢以上两位 ...

回复

RyanBern 发表于 2016-1-13 12:15:04
阿竹天 发表于 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像素。

点评

可以这样理解,因为所谓“页边距”在RMXP中已经定死为上下左右各16,所以设置成32是迎合这个要求。如果改得不合适就会出小箭头。  发表于 2016-1-13 12:41
也就是说,32就是WORD中的“页边距”?非常感谢你的再次解答。  发表于 2016-1-13 12:19

评分

参与人数 1梦石 +1 收起 理由
myownroc + 1 塞糖

查看全部评分

阿竹天 发表于 2016-1-13 11:38:58
RyanBern 发表于 2016-1-13 09:52
第一个问题:
这里是通过楼主所说的“底板”来显示说明文字的,如果没有底板文字无法显示。
不过可以更改底 ...

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

最后,多谢你的视频教程及解答!
RyanBern 发表于 2016-1-13 09:52:16
第一个问题:
这里是通过楼主所说的“底板”来显示说明文字的,如果没有底板文字无法显示。
不过可以更改底板的透明度,让底板隐藏。楼主说改完透明度还是存在白框,那是因为楼主用错了命令。
使用
RUBY 代码复制
  1. self.opacity = 0

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

后者只改了背景的不透明度,窗体本身的没改。
第二个问题:
原因就是楼上M解释的那样,出现箭头一定是画布内容比窗口的内容多。正常情况下,画布的四个边界和画板的四个边界应该距离16个像素单位的长度,这样才不会出现箭头。
第三个问题:
解释同上,这个地方不是画矩形,而是为窗口生成所谓“画布”,以供你描绘文字。

点评

再然后,在Windows_base中的15行, def initialize(x, y, width, height)加一个参数 def initialize(x, y, width, height, opacity)这样更改透明度是不是会更方便……  发表于 2016-1-13 12:00
然后这个BITMAP和super(0, 320, 640, 160)画出来的窗口有没有联系呢?就是Windows_battlestatus开头的内容。  发表于 2016-1-13 11:57
再请问下:self.contents = Bitmap.new(width - 30, height - 30),就是我的名字HPMP状态,将表现在一个30X30的BITMAP之内么?  发表于 2016-1-13 11:56
哦抄,把透明度忘了,还琢磨着搞个Bitmap= =  发表于 2016-1-13 11:45
myownroc 发表于 2016-1-13 02:29:00
本帖最后由 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。

文科生……没有编程基础……
楼主谦虚了……

点评

非常感谢,下了个熊大的横板战斗,正在研究…… 其实函数和参数什么意思,我基本不懂,都是瞎改数值看结果……再次感谢……  发表于 2016-1-13 11:32
Bitmap 的内容超出 Bitmap 范围时会自动被截掉的,不会产生这个问题  发表于 2016-1-13 07:31

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

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

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

GMT+8, 2024-11-14 18:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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