Project1

标题: 【窗口移动】 [打印本页]

作者: 退屈£无聊    时间: 2011-2-27 15:48
标题: 【窗口移动】
本帖最后由 退屈£无聊 于 2011-3-6 15:05 编辑

【就是酱紫的了,忧雪酱说他写的崩了要我帮她看……结果我自己写了一个= =b】
【使用方法:把以下内容插入Window_Base内即可】
  1. #--------------------------------------------------------------------------
  2.   # ● 移动窗口
  3.   #     time   : 时间
  4.   #     move_x :目标X坐标
  5.   #     move_y :目标Y坐标
  6.   #--------------------------------------------------------------------------
  7.   def move_window(time, move_x, move_y)
  8.     @now_x = self.x
  9.     @now_y = self.y
  10.     for i in 0...time
  11.       self.x += (move_x - @now_x) / time
  12.       self.y += (move_y - @now_y) / time
  13.       Graphics.update
  14.     end
  15.       self.x = move_x
  16.       self.y = move_y
  17.   end
复制代码
【调用方式:***.window.move_window(时间, 目标X, 目标Y)】
【有BUG请及时汇报,不过我得等下星期周末才能解决= =bb】
[更新:就不会再出现移动未到位情况了= =因为毕竟移动之后的小数差距只有一点点..一点点(众:你去死吧]
作者: summer92    时间: 2011-2-27 16:13
进来学习一下
作者: DeathKing    时间: 2011-2-27 16:18
雪流星的类似脚本已经做得很好了:http://rpg.blue/thread-165585-1-2.html
这是一个其脚本的应用:http://rpg.blue/thread-168512-1-1.html
作者: 仲秋启明    时间: 2011-3-5 12:06
MS这个更简单一些
作者: DeathKing    时间: 2011-3-5 14:43
回复 仲秋启明 的帖子

不,雪流星的脚本考虑到的细节比这个周到。
考虑 从 10 移动到 20 ,时间是 3 。三次过后,蛐蛐君的脚本就停止了,那么,现在的x坐标是多少呢? 是19,这就是细节的地方。

而雪流星的检测条件是 self.x != dest_x || self.y != dest_y 所以不存在没有移动到位就停止的情况。
作者: j12345678905022    时间: 2011-4-3 22:03
有范例么?
作者: 忧雪の伤    时间: 2011-4-4 15:01
那么如果用浮点数(即前或后者+0.0),改坐标时to_i 呢? (我试过浮点数貌似有极微的误差)

是有误差……所以要在时间减1并且最后修正……这是我的办法
  1. class Window
  2.   
  3.   def move(time, move_x, move_y, move_opacity = 255)
  4.    
  5.     future_x = self.x + move_x
  6.     future_y = self.y + move_y
  7.     future_opacity = self.opacity + move_opacity
  8.     for i in 0...time - 1
  9.       self.x += 1.0 * move_x / time
  10.       self.y += 1.0 * move_y / time
  11.       self.opacity += 1.0 * move_opacity / time
  12.       Graphics.update
  13.     end
  14.     self.x = future_x
  15.     self.y = future_y
  16.     self.opacity = future_opacity
  17.    
  18.   end
  19.   
  20. end
复制代码

作者: 一瞬间的幻觉    时间: 2011-4-4 15:35
优雪是男的还是女的?
作者: DeathKing    时间: 2011-4-5 22:33
回复 忧雪の伤 的帖子

self.y = [self.y - dy_step, dest_x].max

我比较赞同使用 Array#maxArray#min 这种优雅的解决办法。

作者: san9    时间: 2011-4-6 09:50
提示: 作者被禁止或删除 内容自动屏蔽




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