查看: 3491|回复: 11

[已经解决] sprite类如何复制?

  [复制链接]
梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
发表于 2009-9-5 23:25:52 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 「旅」 于 2009-9-5 23:33 编辑

有没有类似的教程?
梦石
1
星屑
12038
在线时间
4536 小时
注册时间
2005-10-22
回帖
7101

开拓者贵宾

发表于 2009-9-5 23:48:47 | 显示全部楼层
呃…………用CLONE行不 囧
回复

使用道具 举报

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
 楼主| 发表于 2009-9-6 01:51:05 | 显示全部楼层
本帖最后由 凌辰 于 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,来制作飞机的多子弹。
回复

使用道具 举报

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
回帖
4075
发表于 2009-9-6 11:11:43 | 显示全部楼层
为何不新建一个Sprite数组?
a = []
for i in 0...10
  a[i] = Sprite.new
end
a[0].bitmap = XXX
……
回复

使用道具 举报

孤独守望

梦石
0
星屑
3144
在线时间
1535 小时
注册时间
2006-10-16
回帖
4223

开拓者贵宾

发表于 2009-9-6 11:25:40 | 显示全部楼层
直接clone应该是可以的,即使是数组
但是我可以负责的告诉你一群sprite在屏幕上飞后果是非常严重的,速度会狂卡
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-10-16
回帖
408
发表于 2009-9-10 14:50:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
 楼主| 发表于 2009-9-10 15:36:19 | 显示全部楼层
本帖最后由 sizz123 于 2009-9-10 15:57 编辑

其实只用一个spirite,多个blt就可以显示多个图片,但让这些图片运动起来很费脑筋。最基本的就是
“擦画擦”运动方式,就是在不同的位置描绘新的图形后,把以前老的图形擦除,达到运动的效果。
所以说,只要一个sprite,就可以显示多个运动的图片。
  但是:同一个sprite上的几个图片,一旦相交,后来移动到位置的图片,就会把前面的图片覆盖掉。而不同sprite上的图片,是不会覆盖的。
  比如,你可以用fill_rect分别描绘一个大的图形和一个小的图形,然后用“擦画擦”运动方式,移动小的,一旦经过大的图形,大的图形就会被擦除一部分。
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-10-16
回帖
408
发表于 2009-9-10 15:47:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

发表于 2009-9-10 16:49:30 | 显示全部楼层
擦了再画?我建议你别这么做。这种方式用于静态画面还行。但每帧都重复的擦写。这个消耗会大的恐怖。
-.-
回复

使用道具 举报

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
 楼主| 发表于 2009-9-10 17:34:43 | 显示全部楼层
幸亏我还没有深入去写,还是考虑用多个sprite,估计合理安排一下就没有问题
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部