Project1

标题: 这货绝对不是教程——关于场景中的窗口精灵移动 [打印本页]

作者: 退屈£无聊    时间: 2011-7-2 15:30
标题: 这货绝对不是教程——关于场景中的窗口精灵移动
本帖最后由 退屈£无聊 于 2011-7-2 15:32 编辑

适用人群只是想给一些系统性脚本加一点微华丽(华丽你大头)的效果的人
提供思路2                                                                                                                  

[line]1[/line]
方法一:
在一个方法中(方法可自选,基本上是在update里=-=)加入如下语句:
  1. if xxx.x <= xxx
  2. loop do
  3. xxx.x += 2
  4. Graphics.update
  5. break if xxx.x > xxx
  6. end
  7. end
复制代码
嘛。。可能有点难以理解,稍微给个范例好了。
  1. =begin
  2. if @window.x <= 50 # 当@window的X值小于等于50的情况下。这里的x可以换成@window中可以更改的属性中的一个如opacity
  3. loop do                     # 循环
  4. @window.x += 2      # @window的X值+2
  5. Graphics.update        # 画面更新
  6. break if @window.x > 50 # 如果@window的X值大于50就结束循环
  7. end
  8. end
  9. =end
复制代码
这一种方法是比较普遍的方法。不过有一点缺点。在某一个窗口或精灵移动时。其他操作全部中断。
[line]1[/line]

第二种:设置比较麻烦。为了防止误伤某脚本,这里采取重命名的方法做介绍(当然你在实际操作中可以直接写。

  1. class ABC
  2. alias old_ini initialize
  3. def initialize
  4. @begin = 0
  5. old_ini
  6. end
  7. alias old_up update
  8. def update
  9. case @begin
  10. when 0
  11. @window.x += 1
  12. @begin = 1 if @window.x > 50
  13. when 1
  14. @window.opacity -= 10
  15. @begin = 2 if @window.opacity <= 0
  16. end
  17. old_up
  18. end
  19. end
复制代码
这个方法的唯一好处就是,可以让窗口或精灵的变更与其他操作同时进行。但是设置比较烦琐。
大概这里就提供了这么两种方法。希望各位能提供更多的思路,谢谢。
作者: summer92    时间: 2011-7-2 15:47
不知道那些正规游戏中的移动效果是不是这么判断,某个精灵是否到达了某个点,没到的话继续移动,看似有更高效的方法。。。。帮顶
作者: f26401004    时间: 2011-8-20 18:32
本帖最后由 f26401004 于 2012-1-14 18:08 编辑

不過窗口的移動應該可以減化成:
if @status_window.x != 20
@status_window.x += 4
end
但這樣子加數必須為20的因數才行......




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