赞 | 1 |
VIP | 246 |
好人卡 | 87 |
积分 | 1 |
经验 | 34142 |
最后登录 | 2015-1-15 |
在线时间 | 323 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 323 小时
- 注册时间
- 2010-8-21
- 帖子
- 666
|
看来lz多多少少懂点脚本,就写写过程:
Window_MenuStatus中可以发现有行
draw_actor_graphic(actor, x - 40, y + 80)
draw_actor_graphic的定义lz可以看看它父类的定义
2个参数,x,y
你需要y坐标在选中,即
@index = 角色在队伍编号 时
y坐标 = y + 79
否则
y坐标 = y + 80
可以了解,行走图占了 1*1.5的地图格(默认),为兼容大图,设为64*96
为提高效率,这点对于游戏程序尤为重要,所以采用局部刷新.
所以建立新的实例变量@index_old,用来记录原来的位置..实例变量初始就是nil值,这就可以偷下懒..
在原来- if @index < 0
- self.cursor_rect.empty
- else
- self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
- end
复制代码 下面加个
refresh_choice if @index != @index_old
refresh_choice if @index != @index_old
新建方法 refresh_choice
这里主要是坐标计算,还有就是清空,
RMXP默认没有清空像素,只有用填充像素,即fill_rect,在color参数写Color.new(0,0,0,0)就行
定义如下:
def refresh_choice color = Color.new(0,0,0,0) if @index_old self.contents.fill_rect(0, @index_old*116, 64, 96, color) draw_actor_graphic($game_party.actors[@index_old], 24, @index_old*116+80) end self.contents.fill_rect(0, @index *116, 64, 96, color) draw_actor_graphic($game_party.actors[@index], 24, @index*116+75) @index_old = @index end
def refresh_choice
color = Color.new(0,0,0,0)
if @index_old
self.contents.fill_rect(0, @index_old*116, 64, 96, color)
draw_actor_graphic($game_party.actors[@index_old], 24, @index_old*116+80)
end
self.contents.fill_rect(0, @index *116, 64, 96, color)
draw_actor_graphic($game_party.actors[@index], 24, @index*116+75)
@index_old = @index
end
1像素太小了,我写了5像素
Window_MenuStatus现在变成了:
#============================================================================== # ■ Window_MenuStatus #------------------------------------------------------------------------------ # 显示菜单画面和同伴状态的窗口。 #============================================================================== class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ● 初始化目标 #-------------------------------------------------------------------------- def initialize super(0, 0, 480, 480) self.contents = Bitmap.new(width - 32, height - 32) refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 116 actor = $game_party.actors[i] draw_actor_graphic(actor, x - 40, y + 80) draw_actor_name(actor, x, y) draw_actor_class(actor, x + 144, y) draw_actor_level(actor, x, y + 32) draw_actor_state(actor, x + 90, y + 32) draw_actor_exp(actor, x, y + 64) draw_actor_hp(actor, x + 236, y + 32) draw_actor_sp(actor, x + 236, y + 64) end end #-------------------------------------------------------------------------- # ● 刷新光标矩形 #-------------------------------------------------------------------------- def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(0, @index * 116, self.width - 32, 96) end refresh_choice if @index != @index_old and @index >= 0 end #-------------------------------------------------------------------------- # ● 局部刷新 #-------------------------------------------------------------------------- def refresh_choice color = Color.new(0,0,0,0) if @index_old self.contents.fill_rect(0, @index_old*116, 64, 96, color) draw_actor_graphic($game_party.actors[@index_old], 24, @index_old*116+80) end self.contents.fill_rect(0, @index *116, 64, 96, color) draw_actor_graphic($game_party.actors[@index], 24, @index*116+75) @index_old = @index end end
#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
# 显示菜单画面和同伴状态的窗口。
#==============================================================================
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化目标
#--------------------------------------------------------------------------
def initialize
super(0, 0, 480, 480)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 64
y = i * 116
actor = $game_party.actors[i]
draw_actor_graphic(actor, x - 40, y + 80)
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 144, y)
draw_actor_level(actor, x, y + 32)
draw_actor_state(actor, x + 90, y + 32)
draw_actor_exp(actor, x, y + 64)
draw_actor_hp(actor, x + 236, y + 32)
draw_actor_sp(actor, x + 236, y + 64)
end
end
#--------------------------------------------------------------------------
# ● 刷新光标矩形
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
end
refresh_choice if @index != @index_old and @index >= 0
end
#--------------------------------------------------------------------------
# ● 局部刷新
#--------------------------------------------------------------------------
def refresh_choice
color = Color.new(0,0,0,0)
if @index_old
self.contents.fill_rect(0, @index_old*116, 64, 96, color)
draw_actor_graphic($game_party.actors[@index_old], 24, @index_old*116+80)
end
self.contents.fill_rect(0, @index *116, 64, 96, color)
draw_actor_graphic($game_party.actors[@index], 24, @index*116+75)
@index_old = @index
end
end
这样就好了 |
评分
-
查看全部评分
|