Project1

标题: 关于不规则的对话框 [打印本页]

作者: yubenzuo    时间: 2014-7-16 17:49
标题: 关于不规则的对话框

我想用脚本绘制一个这样的对话框,而且最上面的部分可以随着说话人姓名的长度发生变化~
想实现这样的效果脚本该怎么写……求个人大神给予一点指点,谢谢
作者: taroxd    时间: 2014-7-16 18:24
唔,我觉得大概要抛弃 Window ,要用 Sprite 画了……

先绘制下半部分,然后将上半部分拉伸后直接覆盖在下半部分上面就可以了
作者: yubenzuo    时间: 2014-7-16 18:28
taroxd 发表于 2014-7-16 18:24
唔,我觉得大概要抛弃 Window ,要用 Sprite 画了……

先绘制下半部分,然后将上半部分拉伸后直接覆盖在下 ...

版主大人的意思是绘制两个矩形叠加在一起吗?
能麻烦版主大人给点参考吗?本人的脚本还处于萌新萌新的入门级学习状态
作者: taroxd    时间: 2014-7-16 18:30
yubenzuo 发表于 2014-7-16 18:28
版主大人的意思是绘制两个矩形叠加在一起吗?
能麻烦版主大人给点参考吗?本人的脚本还处于萌新萌新的入 ...

不只是要叠加,上半部分还需要拉伸等操作。

我现在没啥素材给你参考。这个东西可能会有点用吧。
作者: yubenzuo    时间: 2014-7-16 18:33
taroxd 发表于 2014-7-16 18:30
不只是要叠加,上半部分还需要拉伸等操作。

我现在没啥素材给你参考。这个东西可能会有点用吧。 ...

好的,谢谢,我先研究一下……不知道能不能弄明白
作者: taroxd    时间: 2014-7-16 18:37
yubenzuo 发表于 2014-7-16 18:33
好的,谢谢,我先研究一下……不知道能不能弄明白

至于 Sprite 的用法,默认脚本就是比较好的演示。
弄不明白没关系,终有一天会明白的。加油~

制作这种对话框,还是自己动手比较好呢~(其实是你懒吧喂
作者: VIPArcher    时间: 2014-7-16 18:48
其实我觉得直接显示图片,然后用透明对话框比较省事
作者: yubenzuo    时间: 2014-7-16 19:17
VIPArcher 发表于 2014-7-16 18:48
其实我觉得直接显示图片,然后用透明对话框比较省事

我想过PS几个对话框……
不过我在设定里有一个调整对话框填充色的设计……所以才有此问……
作者: 喵呜喵5    时间: 2014-7-16 19:57
将你的对话框素材拆成这样两个:


前一个素材正常作为精灵显示,后一个素材设置一个Viewport,Viewport的x坐标和宽度根据人物姓名的长度每次显示新对话时计算一次
作者: yubenzuo    时间: 2014-7-16 23:07
喵呜喵5 发表于 2014-7-16 19:57
将你的对话框素材拆成这样两个:

虽然明白了您的意思……
不过这样的话,对话框内的填充颜色还能随意调整么?
而且我感觉这个脚本我好像写不出来……
唉……我还是多ps几个不同的对话框吧……
作者: 喵呜喵5    时间: 2014-7-17 01:02
本帖最后由 喵呜喵5 于 2014-7-17 01:11 编辑

只是这种程度的脚本真心没有难度,困难的是之后你把这个脚本和原本的Window_Message整合起来,随手写了一个简单的范例代码,你自己参考一下吧:
  1. # 屏幕大小调整以适应素材大小
  2. Graphics.resize_screen(640,480)
  3. class Spriteset_m5window  
  4.   # 载入
  5.   def initialize(x = 0, y = 0)
  6.     @viewport = Viewport.new(0,0,560,61)
  7.     @back1 = Sprite.new
  8.     new_pos(x, y)
  9.     @back2 = Sprite.new(@viewport)
  10.     @back1.bitmap = Cache.system("1")
  11.     @back2.bitmap = Cache.system("2")         
  12.     @back1.z = @back2.z = 200
  13.     # 方便测试的代码
  14.     new_name_pos($game_variables[1])
  15.   end  
  16.   # 上方宽度改变
  17.   def new_name_pos(width)
  18.     @back2.x = -width
  19.   end  
  20.   # 对话框位置改变
  21.   def new_pos(x,y)   
  22.     @back1.x = @viewport.rect.x = x
  23.     @back1.y = @viewport.rect.y = y
  24.   end  
  25.   # 释放
  26.   def dispose
  27.     @back1.bitmap.dispose
  28.     @back2.bitmap.dispose
  29.     @back1.dispose
  30.     @back2.dispose
  31.     @viewport.dispose
  32.   end
  33. end
  34. # Scene
  35. class Scene_Map
  36.   alias m5_20140717_create_message_window create_message_window
  37.   def create_message_window
  38.     m5_20140717_create_message_window
  39.     @message_window_sprite = Spriteset_m5window.new(28,300)
  40.   end
  41.   alias m5_20140717_terminate terminate
  42.   def terminate
  43.     m5_20140717_terminate
  44.     @message_window_sprite.dispose
  45.   end
  46. end
复制代码
素材:

2.png (455 Bytes, 下载次数: 30)

2.png

1.png (914 Bytes, 下载次数: 29)

1.png

作者: yubenzuo    时间: 2014-7-17 17:49
喵呜喵5 发表于 2014-7-17 01:02
只是这种程度的脚本真心没有难度,困难的是之后你把这个脚本和原本的Window_Message整合起来,随手写了一个 ...

感谢万分……大神眼里的没难度已经快要了我这个萌新的命了……
我会努力学习的~谢谢您的范例~




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