Project1

标题: 动态图片显示 [打印本页]

作者: 黑米馒头    时间: 2014-8-20 20:39
标题: 动态图片显示
下面这个脚本如何做成动态的图片显示,改成bitmap.width / 8的图片显示
  1.   def draw_actor_face_zhuangbei_lvup(actor, x, y)
  2.      facename = "Graphics/Pictures/图片显示/人物头像/#{actor.id}_Z"
  3.      bitmap = Bitmap.new(facename)
  4.     #Faces 这个文件夹需要自己建立,把头像都放在这里面
  5.     src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  6.     self.contents.blt(0, 0, bitmap, src_rect)
  7.     self.x = 80
  8.     self.y = 63
  9.   end
复制代码

作者: 白鬼    时间: 2014-8-20 22:52
本帖最后由 白鬼 于 2014-8-20 22:56 编辑
  1.   def draw_actor_face_zhuangbei_lvup(actor, x, y)
  2.     facename = "Graphics/Pictures/图片显示/人物头像/#{actor.id}_Z"
  3.     bitmap = Bitmap.new(facename)
  4.     #Faces 这个文件夹需要自己建立,把头像都放在这里面
  5.     cw = Bitmap.width / 8
  6.     ch = Bitmap.height / 8
  7.     @start_turn = ture
  8.     case @start_phase
  9.     when 0
  10.       x_x = 0
  11.     when 1
  12.       x_x = cw
  13.     when 2
  14.       x_x = cw*2
  15.     when 3
  16.       x_x = cw*3
  17.     when 4
  18.       x_x = cw*4
  19.     when 5
  20.       x_x = cw*5
  21.     when 6
  22.       x_x = cw*6
  23.     when 7
  24.       x_x = cw*7
  25.     end
  26.     src_rect = Rect.new(x_x, 0, cw, ch)
  27.     self.contents.blt(0, 0, bitmap, src_rect)
  28.     self.x = 80
  29.     self.y = 63
  30.   end
复制代码
不知道好不好用。这是仿造着状态画面显示角色行走图移动状态写改的。
你先试试吧。不好用或者哪里有问题再说。


对了,还得定义 update
不然这东西运作不了
其实也就是@start_phase需要有变化

原脚本是酱紫
  1.   def update
  2.     walk_update
  3.     if @start_turn == true
  4.       @turn_index += 1
  5.       if @turn_index == 8#行走图播放速度
  6.         refresh
  7.         @turn_index = 0
  8.         @turn_phase = (@turn_phase+1)%4
  9.       end
  10.     end
  11.   end  
复制代码
你看看情况,在你用的脚本 update的部分加入
作者: 恐惧剑刃    时间: 2014-8-21 06:33
  1. def refresh_sprite(actor, x, y)
  2.   @bitmap_index = 0 if @bitmap_index.nil?
  3.   
  4.   facename = "Graphics/Pictures/图片显示/人物头像/#{actor.id}_Z"
  5.   
  6.   bitmap = Bitmap.new(facename)
  7.   
  8.   #Faces 这个文件夹需要自己建立,把头像都放在这里面
  9.   w = bitmap.width / 8
  10.   src_rect = Rect.new(@bitmap_index * w, 0, bitmap.width / 8, bitmap.height)
  11.   
  12.   self.contents.blt(0, 0, bitmap, src_rect)
  13.   
  14.   
  15.   @bitmap_index += 1
  16.   if @bitmap_index == 8
  17.     @bitmap_index = 0
  18.   end
  19.   
  20.   self.x = 80
  21.   self.y = 63
  22. end
复制代码
不停refresh_sprite就可以,

如果卡就这样
if Graphics.frame_count % 5 == 0#5越大刷新速度越慢
  @xx.refresh_sprite
end
作者: 黑米馒头    时间: 2014-8-21 06:59
恐惧剑刃 发表于 2014-8-21 06:33
不停refresh_sprite就可以,

如果卡就这样

我是把图片放在Window_EquipLeft的,没看到动态,怎么刷新。。还有图片显示的很小,在什么地方改宽度和高度   我加了这2句看不出效果。   self.width = 100      self.height = 100
作者: 恐惧剑刃    时间: 2014-8-21 07:22
本帖最后由 恐惧剑刃 于 2014-8-21 08:32 编辑

加一个方法
def update
  super
  if Graphics.frame_count % 5 == 0
     refresh_sprite
  end
end

self.width .height 只会修改窗口的宽度和高度

不要改 self.width .height ,如果还显示小(是显示不完整还是小。。),可能是坐标问题
尝试把
self.x = 80
self.y = 63
改为
self.x = 0
self.y = 0
如果这样能够完整显示就是坐标的问题了。


新建Bitmap试试
self.contents.dispose
self.contents = nil
self.contents = Bitmap.new(width - 32, height - 32)
作者: 黑米馒头    时间: 2014-8-21 09:11
恐惧剑刃 发表于 2014-8-21 07:22
加一个方法
def update
  super

要不帮我把图片弄成独立的窗口里面显示,然后放到装备界面,

Project2.rar

256.46 KB, 下载次数: 30


作者: 芯☆淡茹水    时间: 2014-8-22 15:24
坐标什么的,就自己调一下
Project2.rar (255.94 KB, 下载次数: 50)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1