RyanBern 发表于 2018-5-13 09:04 首先十分感谢版主前辈的耐心说明和指导。 也稍微解释一下自己当初写该脚本的想法。 1.窗口是固定没做释放的,考虑到可以还要做在另外的场景里所以这点没做释放考虑; 2.其实是想生成多个窗口用于显示多行提示文字; 3.同二项,用于多行文字的显示; 4.的确因为在不同类里,不能跨类调用才写两遍; 5.个人习惯问题... 关于angle_message变量名。原以为angle有角度的意思就随其自然写了。 其实当初的想法是写 angel_message,即笨蛋天使夕露的信息窗口。 然后单词拼错了就懒得改了... |
本帖最后由 RyanBern 于 2018-5-13 09:12 编辑 出错的原因同楼上讲的,不再重复。 这段代码有几个很严重的问题。 1. 所有 Window_Show_Message 实例只有创建没有释放。这会导致它在该消失的时候没有消失。 2. 按照楼主的意思,对一个窗口进行 set_text,如果位置不重叠应该是叠加显示。但是在实现的时候明显看到一句 self.contents.clear,因此对同一个窗口实例不断进行 set_text,应该只有一个位置有字。楼主的截图是多行有字,其实是生成了多个窗口,旧窗口没被清除而造成的错觉。 3. 不是很明白为什么要设置 4 个 set_text 方法,把位置作为一个参数写在方法里,或者是给 Window_Show_Message 加个实变量记录目前的位置可能会更好。 4. 为什么要有两个 set_line_text?仅仅因为它们出现在两个不同类里因此就定义了两个?程序编写切忌在不同位置出现一模一样的代码,如果这种事情真发生了,肯定有一个是多余的。一个常用的做法是设置与显示分离,即在 Interpreter 里只设置好要显示的东西,至于显示在哪,怎么显示,是由 Window_Show_Message 类控制。连接这两个方面只要一个全局变量。 5. Module 里最好不要出现全局变量的赋值。没有规定说这个赋值在反复 include 里只执行一次。 综上所述,这个功能可以写成这样(下面的代码只是展示结构,不能直接运行) RUBY 代码复制
另外吐槽一下变量名,angle + message 不是 角落+信息 啊。angle 这词从来就没有“角落”的含义。 |
本帖最后由 yang1zhi 于 2018-5-12 17:13 编辑 我觉得问题应该是,每次都出一个new 这样你要用变量来记下这些新建立的窗口们,之后释放。 可以用数组,每次一个NEW就加到这个数组里 只要在一开始new一下就好了啊 你想要4行就建个变量,按不同的Y坐标来显示这个变量里的字符串们就行了。 FOR 循环这个变量里的每个字符串,然后显示出来。 |
略乱..... 感觉出问题的原因是你不停的赋予窗口实例造成的吧, 这样refresh清除的是新窗口的contents, 而不是旧窗口的contents....... |
本帖最后由 soulsaga 于 2018-5-12 16:27 编辑 在初始化消除信息有什么意义.. 而且第2次文章显示的SELF应该不是同一个了? |
写的很乱……但是逻辑上好像没什么问题,确认一下refresh被执行到了,加个p试试 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-27 18:37
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.