设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3140|回复: 11
打印 上一主题 下一主题

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

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
跳转到指定楼层
1
发表于 2009-9-5 23:25:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

有没有类似的教程?

Lv4.逐梦者

梦石
1
星屑
10356
在线时间
4446 小时
注册时间
2005-10-22
帖子
7005

开拓者贵宾

2
发表于 2009-9-5 23:48:47 | 只看该作者
呃…………用CLONE行不 囧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
3
 楼主| 发表于 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,来制作飞机的多子弹。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
4
发表于 2009-9-6 11:11:43 | 只看该作者
为何不新建一个Sprite数组?
a = []
for i in 0...10
  a[i] = Sprite.new
end
a[0].bitmap = XXX
……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3137
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

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

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-10-16
帖子
450
6
发表于 2009-9-10 14:50:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
7
 楼主| 发表于 2009-9-10 15:36:19 | 只看该作者
本帖最后由 sizz123 于 2009-9-10 15:57 编辑

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

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-10-16
帖子
450
8
发表于 2009-9-10 15:47:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

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

贵宾

9
发表于 2009-9-10 16:49:30 | 只看该作者
擦了再画?我建议你别这么做。这种方式用于静态画面还行。但每帧都重复的擦写。这个消耗会大的恐怖。
-.-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
10
 楼主| 发表于 2009-9-10 17:34:43 | 只看该作者
幸亏我还没有深入去写,还是考虑用多个sprite,估计合理安排一下就没有问题
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-9 02:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表