设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1826|回复: 4
打印 上一主题 下一主题

[已经解决] 如何移动项目矩形的坐标

[复制链接]

Lv4.逐梦者

梦石
8
星屑
4801
在线时间
1567 小时
注册时间
2014-1-9
帖子
402

开拓者

跳转到指定楼层
1
发表于 2018-2-12 17:13:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我想让窗口的项目每帧都移动2个坐标,产生滑动效果,但是直接在update方法中加上@rect.x += 2没反应,不过改成self.cursor_rect.x += 2也就是光指光标移动是可行的
如图: 。如果要连同内容这就是整个项目一起移动的话要怎么改,求助大佬!
附上代码:
  1. class Window_XXX < Window_Selectable
  2.   
  3.   def initialize
  4.     super(0, 0, 300, 96)
  5.     activate
  6.     select(0)
  7.     refresh
  8.   end
  9.   
  10.   def item_max
  11.     return 3
  12.   end
  13.   
  14.   def item_rect(index)
  15.     @rect = Rect.new
  16.     @rect.width = item_width
  17.     @rect.height = item_height
  18.     @rect.x = index % col_max * (item_width + spacing)
  19.     @rect.y = index / col_max * item_height
  20.     @rect
  21.   end

  22.   alias :old_update :update
  23.   def update
  24.     old_update
  25.     @rect.x += 2
  26. #~     self.cursor_rect.x += 2
  27.   end

  28.   def draw_item(index)
  29.     @rect = item_rect(index)
  30.     draw_text(@rect, "XXXXX")
  31.   end

  32.   
  33. end

  34. class Scene_Map < Scene_Base
  35.   
  36.   alias :old_create_all_windows :create_all_windows
  37.   def create_all_windows
  38.     old_create_all_windows
  39.     @xxx = Window_XXX.new
  40.   end
  41.   
  42. end
复制代码


Lv6.析梦学徒

老鹰

梦石
40
星屑
34725
在线时间
6740 小时
注册时间
2012-5-26
帖子
3259

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 2018-2-12 17:28:49 | 只看该作者
……?
这些项目实际上是每次光标移动后整体重绘来的,所以……并没有想象中的单独的项目移动
可以试试每个项目变成新建一个精灵进行绘制(x)

点评

多谢老鹰大大,已经解决  发表于 2018-2-14 11:41
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19433
在线时间
3102 小时
注册时间
2013-1-11
帖子
1291
3
发表于 2018-2-12 21:16:19 | 只看该作者

如果要循环的话就加个坐标超出判断在还原

  1. class Window_XXX < Window_Selectable
  2.   
  3.   def initialize
  4.     @s_index = -1
  5.     @deviation = Array.new(item_max, 0)
  6.     super(0, 0, 300, 96)
  7.     activate
  8.     select(0)
  9.     refresh
  10.   end
  11.   
  12.   def item_max
  13.     return 3
  14.   end

  15.   alias :old_update :update
  16.   def update
  17.     old_update
  18.     if @index != @s_index
  19.       @s_index = @index
  20.       @deviation = Array.new(item_max, 0)
  21.     end
  22.     @deviation[@index] += 2 ######
  23.     self.cursor_rect.x = @rect.x + @deviation[@index]
  24.     refresh
  25.   end

  26.   def draw_item(index)
  27.     @rect = item_rect(index)
  28.     @rect.x += @deviation[index]
  29.     draw_text(@rect, "XXXXX")
  30.   end

  31. end

  32. class Scene_Map < Scene_Base
  33.   
  34.   alias :old_create_all_windows :create_all_windows
  35.   def create_all_windows
  36.     old_create_all_windows
  37.     @xxx = Window_XXX.new
  38.   end
  39.   
  40. end
复制代码

点评

多谢大佬帮助,已经解决  发表于 2018-2-14 11:42
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 11:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表