赞 | 5 |
VIP | 71 |
好人卡 | 22 |
积分 | 6 |
经验 | 32145 |
最后登录 | 2013-8-9 |
在线时间 | 184 小时 |
Lv2.观梦者 天仙
- 梦石
- 0
- 星屑
- 620
- 在线时间
- 184 小时
- 注册时间
- 2008-4-15
- 帖子
- 5023
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 雪流星 于 2011-1-21 22:16 编辑
作另一个系统的时候,为了让窗口滑动,顺便制作出来的副产品......
使用说明:
创建窗口之后,可以使用调整窗口的座标,并且将窗口滑动到指定位置。
可用于制作华丽菜单显示效果
* 窗口.in(方向[, 移动距离])
方向可以为 2(下), 4(左), 6(右), 8(上)
移动距离默认为 10
将窗口滑动至画面外。
* 窗口.out(方向[, 移动距离])
方向可以为 2(下), 4(左), 6(右), 8(上)
移动距离默认为 10
将窗口由画面外滑动至原位。
* 窗口.move_to(目标 X 座标, 目标 Y 座标[, 移动距离])
移动距离默认为 10
将窗口滑动至指定座标。
- #==============================================================================
- # ■ [VX] 窗口滑动
- # [VX] WindowSlide
- #----------------------------------------------------------------------------
- # 使用说明:
- # 创建窗口之后,可以使用调整窗口的座标,并且将窗口滑动到指定位置。
- # 可用于制作华丽菜单显示效果
- # * 窗口.in(方向[, 移动距离])
- # 方向可以为 2(下), 4(左), 6(右), 8(上)
- # 移动距离默认为 10
- # 将窗口滑动至画面外。
- #
- # * 窗口.out(方向[, 移动距离])
- # 方向可以为 2(下), 4(左), 6(右), 8(上)
- # 移动距离默认为 10
- # 将窗口由画面外滑动至原位。
- #
- # * 窗口.move_to(目标 X 座标, 目标 Y 座标[, 移动距离])
- # 移动距离默认为 10
- # 将窗口滑动至指定座标。
- #----------------------------------------------------------------------------
- # 更新作者: 雪流星(Snstar2006)
- # 许可协议: FSL
- # 项目版本: 1.0.1
- #----------------------------------------------------------------------------
- # - *1.0.1* (2011-01-21) By 雪流星(Snstar2006)
- # *修改算法,省去计算根号的步骤,稍微提高效率
- # - *1.0.0* (2011-01-21) By 雪流星(Snstar2006)
- # *初版
- #==============================================================================
- $fscript = {} if $fscript == nil
- $fscript["WindowSlide"] = "1.0.0"
- class Window_Base < Window
- alias move_window_initialize initialize
- def initialize(x, y, width, height)
- move_window_initialize(x, y, width, height)
- @permanent_x = x
- @permanent_y = y
- end
- def in(direction, step=10)
- case direction
- when 2
- move_to(self.x, -self.height, step)
- when 4
- move_to(-self.width, self.y, step)
- when 6
- move_to(Graphics.width + self.width, self.y, step)
- when 8
- move_to(self.x, Graphics.height + self.height, step)
- end
- Graphics.wait(1)
- end
- def out(direction, step=10)
- case direction
- when 2, 8
- move_to(self.x, @permanent_y, step)
- when 4, 6
- move_to(@permanent_x, self.y, step)
- end
- end
- def move_to(dest_x, dest_y, move_step=10)
- dx = dest_x - self.x
- dy = dest_y - self.y
- if dx == 0
- dy_step = move_step
- dx_step = 0
- elsif dy == 0
- dx_step = move_step
- dy_step = 0
- else
- max_distance_sq = dx**2+dy**2
- angle = Math.atan(dy.abs/dx.abs)
- dy_step = move_step*Math.sin(angle)
- dx_step = max_distance_sq - dy_step**2
- end
- while (self.x != dest_x || self.y != dest_y)
- if dx > 0
- self.x = [self.x + dx_step, dest_x].min
- else
- self.x = [self.x - dx_step, dest_x].max
- end
- if dy > 0
- self.y = [self.y + dy_step, dest_x].min
- else
- self.y = [self.y - dy_step, dest_x].max
- end
- Graphics.wait(1)
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|