Project1
标题:
【窗口移动】
[打印本页]
作者:
退屈£无聊
时间:
2011-2-27 15:48
标题:
【窗口移动】
本帖最后由 退屈£无聊 于 2011-3-6 15:05 编辑
【就是酱紫的了,忧雪酱说他写的崩了要我帮她看……结果我自己写了一个= =b】
【使用方法:把以下内容插入Window_Base内即可】
#--------------------------------------------------------------------------
# ● 移动窗口
# time : 时间
# move_x :目标X坐标
# move_y :目标Y坐标
#--------------------------------------------------------------------------
def move_window(time, move_x, move_y)
@now_x = self.x
@now_y = self.y
for i in 0...time
self.x += (move_x - @now_x) / time
self.y += (move_y - @now_y) / time
Graphics.update
end
self.x = move_x
self.y = move_y
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并且最后修正……这是我的办法
class Window
def move(time, move_x, move_y, move_opacity = 255)
future_x = self.x + move_x
future_y = self.y + move_y
future_opacity = self.opacity + move_opacity
for i in 0...time - 1
self.x += 1.0 * move_x / time
self.y += 1.0 * move_y / time
self.opacity += 1.0 * move_opacity / time
Graphics.update
end
self.x = future_x
self.y = future_y
self.opacity = future_opacity
end
end
复制代码
作者:
一瞬间的幻觉
时间:
2011-4-4 15:35
优雪是男的还是女的?
作者:
DeathKing
时间:
2011-4-5 22:33
回复
忧雪の伤
的帖子
self.y = [self.y - dy_step, dest_x].max
我比较赞同使用
Array#max
和
Array#min
这种优雅的解决办法。
作者:
san9
时间:
2011-4-6 09:50
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1