Project1

标题: sprite类如何复制? [打印本页]

作者: sizz123    时间: 2009-9-5 23:25
标题: sprite类如何复制?
本帖最后由 「旅」 于 2009-9-5 23:33 编辑

有没有类似的教程?
作者: orochi2k    时间: 2009-9-5 23:48
呃…………用CLONE行不 囧
作者: sizz123    时间: 2009-9-6 01:51
本帖最后由 凌辰 于 2009-9-6 11:40 编辑

clone  不可以,用了数组的方式
==================================================================
   class Scene_Game2
  def main
   @d = [] #用数组统一建立多个类
   for v in 0..1 #通过这里,我可以设置建立几个类
    @d.push "a"+v.to_s #添加元素
    @d[v]=Sprite.new #建立对象
    @d[v].bitmap = Bitmap.new(800,600)#建立图层
    @d[v].bitmap.fill_rect(0, 0, 32, 32, Color.new(240,200,64)) #
    end
    Graphics.transition(20)
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    @d[v].bitmap.dispose
    @d[v].dispose
  end
  def update
    if Input.trigger?(Input::C)
      $scene = Scene_Map.new
    end
    if Input.trigger?(Input::DOWN)
     @d[1].oy-=50
     @d[0].oy-=100   #证明建立的两个类是否存在,严整后,是存在的
    end
  end
end

我并不清楚“射击游戏”是如何制作的,所以就想到了这个方式---通过建立多个sprite,来制作飞机的多子弹。
作者: tommay    时间: 2009-9-6 11:11
为何不新建一个Sprite数组?
a = []
for i in 0...10
  a[i] = Sprite.new
end
a[0].bitmap = XXX
……
作者: IamI    时间: 2009-9-6 11:25
直接clone应该是可以的,即使是数组
但是我可以负责的告诉你一群sprite在屏幕上飞后果是非常严重的,速度会狂卡
作者: 66rpg学习    时间: 2009-9-10 14:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: sizz123    时间: 2009-9-10 15:36
本帖最后由 sizz123 于 2009-9-10 15:57 编辑

其实只用一个spirite,多个blt就可以显示多个图片,但让这些图片运动起来很费脑筋。最基本的就是
“擦画擦”运动方式,就是在不同的位置描绘新的图形后,把以前老的图形擦除,达到运动的效果。
所以说,只要一个sprite,就可以显示多个运动的图片。
  但是:同一个sprite上的几个图片,一旦相交,后来移动到位置的图片,就会把前面的图片覆盖掉。而不同sprite上的图片,是不会覆盖的。
  比如,你可以用fill_rect分别描绘一个大的图形和一个小的图形,然后用“擦画擦”运动方式,移动小的,一旦经过大的图形,大的图形就会被擦除一部分。
作者: 66rpg学习    时间: 2009-9-10 15:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2009-9-10 16:49
擦了再画?我建议你别这么做。这种方式用于静态画面还行。但每帧都重复的擦写。这个消耗会大的恐怖。
作者: sizz123    时间: 2009-9-10 17:34
幸亏我还没有深入去写,还是考虑用多个sprite,估计合理安排一下就没有问题
作者: goahead    时间: 2009-9-11 08:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: sizz123    时间: 2009-9-16 15:42
好好好,我再看看吧




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