Project1
标题:
如何移动项目矩形的坐标
[打印本页]
作者:
余音·魔眼
时间:
2018-2-12 17:13
标题:
如何移动项目矩形的坐标
我想让窗口的项目每帧都移动2个坐标,产生滑动效果,但是直接在update方法中加上@rect.x += 2没反应,不过改成self.cursor_rect.x += 2也就是光指光标移动是可行的
如图:
GIF.gif
(410.63 KB, 下载次数: 20)
下载附件
保存到相册
2018-2-12 17:07 上传
。如果要连同内容这就是整个项目一起移动的话要怎么改,求助大佬!
附上代码:
class Window_XXX < Window_Selectable
def initialize
super(0, 0, 300, 96)
activate
select(0)
refresh
end
def item_max
return 3
end
def item_rect(index)
@rect = Rect.new
@rect.width = item_width
@rect.height = item_height
@rect.x = index % col_max * (item_width + spacing)
@rect.y = index / col_max * item_height
@rect
end
alias :old_update :update
def update
old_update
@rect.x += 2
#~ self.cursor_rect.x += 2
end
def draw_item(index)
@rect = item_rect(index)
draw_text(@rect, "XXXXX")
end
end
class Scene_Map < Scene_Base
alias :old_create_all_windows :create_all_windows
def create_all_windows
old_create_all_windows
@xxx = Window_XXX.new
end
end
复制代码
作者:
百里_飞柳
时间:
2018-2-12 17:28
……?
这些项目实际上是每次光标移动后整体重绘来的,所以……并没有想象中的单独的项目移动
可以试试每个项目变成新建一个精灵进行绘制(x)
作者:
张咚咚
时间:
2018-2-12 21:16
如果要循环的话就加个坐标超出判断在还原
class Window_XXX < Window_Selectable
def initialize
@s_index = -1
@deviation = Array.new(item_max, 0)
super(0, 0, 300, 96)
activate
select(0)
refresh
end
def item_max
return 3
end
alias :old_update :update
def update
old_update
if @index != @s_index
@s_index = @index
@deviation = Array.new(item_max, 0)
end
@deviation[@index] += 2 ######
self.cursor_rect.x = @rect.x + @deviation[@index]
refresh
end
def draw_item(index)
@rect = item_rect(index)
@rect.x += @deviation[index]
draw_text(@rect, "XXXXX")
end
end
class Scene_Map < Scene_Base
alias :old_create_all_windows :create_all_windows
def create_all_windows
old_create_all_windows
@xxx = Window_XXX.new
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1