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

Project1

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

[已经解决] 想做个荧光飘起的效果

[复制链接]

Lv3.寻梦者

梦石
0
星屑
995
在线时间
180 小时
注册时间
2013-2-16
帖子
176
跳转到指定楼层
1
发表于 2015-8-23 00:29:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想在标题做个荧光缓慢飘起或者散开的效果,然后自己糊了一下代码之后再TITLE里调用UPDATE,发现虽然没有报错但是一点效果都没有。
RUBY 代码复制
  1. class Fire_Flies < Sprite
  2.   def initialize(type)#rise:1   spread :2
  3.     super(nil)
  4.     @xadd_count = 0.0
  5.     @yadd_count = 0.0
  6.     @oadd_count = 0.0
  7.     @life = 300 - rand(100)
  8.     @during = 0
  9.     @type = type
  10.     case @type
  11.     when 1
  12.      @aim = [0,rand(30)+100]
  13.      @speed_x = 0.0#f
  14.      @speed_y = @aim[1].to_f/@life#f
  15.      x = rand(640)
  16.      hue = rand(360)
  17.      zoom = rand(0)
  18.  
  19.      self.bitmap = Bitmap.new("Graphics/Pictures/fireflies.png")
  20.      self.ox = self.bitmap.width/2
  21.      self.oy = 0
  22.      self.opacity = 250
  23.      self.bitmap.hue_change(hue)
  24.      self.x = x
  25.      self.y = 480
  26.      self.zoom_x = zoom
  27.      self.zoom_y = zoom
  28.  
  29.     when 2
  30.       @aim = [rand(30)+50,rand(30)+50]
  31.       @speed_x = @aim[0].to_f/@life#f
  32.       @speed_y = @aim[1].to_f/@life#f
  33.       zoom = rand(0)
  34.       self.bitmap = Bitmap.new("Graphics/Pictures/fireflies.png")
  35.       self.ox = self.bitmap.width/2
  36.       self.oy = self.bitmap.height/2
  37.       self.opacity = 1
  38.       self.x = Graphics.width/2
  39.       self.y = Graphics.width/2
  40.       self.zoom_x = zoom
  41.       self.zoom_y = zoom
  42.  
  43.     end
  44.   end
  45.  
  46.   def fireflies_update
  47.     @xadd_count += @speed_x
  48.     @yadd_count += @speed_y
  49.     @oadd_count += 250.0/@life
  50.     if @xadd_count >= 1
  51.      self.x += @xadd_count
  52.      @xadd_count -= 1
  53.     end
  54.     if @yadd_count >= 1
  55.      self.x += @yadd_count
  56.      @yadd_count -= 1
  57.     end
  58.     if @oadd_count >= 1
  59.       if @during < @life / 3 and @type == 2
  60.        self.opacity += @oadd_count
  61.       else
  62.        self.opacity -= @oadd_count
  63.       end
  64.  
  65.      @oadd_count -= 1
  66.    end
  67.    @during += 1
  68.    self.dispose if @during == @life
  69. end
  70. end


在update里大概是这样调用的(自己删掉了……)
if rand(50) == 10
@light_list.push(Fireflies.new(1))#(初始化好了的)
end
for i in @light_list
i.fireflies_update
end

没有任何效果…………这是怎么回事?

点评

Z值会不会低于标题图片?  发表于 2015-8-23 04:31

Lv1.梦旅人

梦石
0
星屑
197
在线时间
166 小时
注册时间
2009-5-2
帖子
300

开拓者

2
发表于 2015-8-23 08:18:00 | 只看该作者
本帖最后由 个快快 于 2015-8-23 10:45 编辑
  1. class Fire_Flies < Sprite
  2.   def initialize(type)#rise:1   spread :2
  3.     super(nil)
  4.     @xadd_count = 0.0
  5.     @yadd_count = 0.0
  6.     @oadd_count = 0.0
  7.     @life = 300 - rand(100)
  8.     @during = 0
  9.     @type = type
  10.     case @type
  11.     when 1
  12.      @aim = [0,rand(30)+100]
  13.      @speed_x = 0.0#f
  14.      @speed_y = @aim[1].to_f/@life#f
  15.      x = rand(640)
  16.      hue = rand(360)
  17.      zoom = rand(0)

  18.      self.bitmap = Bitmap.new("Graphics/Pictures/fireflies.png")
  19.      self.ox = self.bitmap.width/2
  20.      self.oy = 0
  21.      self.opacity = 250
  22.      self.bitmap.hue_change(hue)
  23.      self.x = x
  24.      self.y = 480 - self.bitmap.height
  25.      self.zoom_x = zoom
  26.      self.zoom_y = zoom

  27.     when 2
  28.       @aim = [rand(30)+50,rand(30)+50]
  29.       @speed_x = @aim[0].to_f/@life#f
  30.       @speed_y = @aim[1].to_f/@life#f
  31.       zoom = rand(0)
  32.       self.bitmap = Bitmap.new("Graphics/Pictures/fireflies.png")
  33.       self.ox = self.bitmap.width/2
  34.       self.oy = self.bitmap.height/2
  35.       self.opacity = 1
  36.       self.x = Graphics.width/2
  37.       self.y = Graphics.width/2
  38.       self.zoom_x = zoom
  39.       self.zoom_y = zoom

  40.     end
  41.   end

  42.   def fireflies_update
  43.     @xadd_count += @speed_x
  44.     @yadd_count += @speed_y
  45.     @oadd_count += 250.0/@life
  46.     if @xadd_count >= 1
  47.      self.x += @xadd_count
  48.      @xadd_count -= 1
  49.     end
  50.     if @yadd_count >= 1
  51.      self.x += @yadd_count
  52.      @yadd_count -= 1
  53.     end
  54.     if @oadd_count >= 1
  55.       if @during < @life / 3 and @type == 2
  56.        self.opacity += @oadd_count
  57.       else
  58.        self.opacity -= @oadd_count
  59.       end

  60.      @oadd_count -= 1
  61.    end
  62.    @during += 1
  63.    #self.dispose if @during == @life
  64. end
  65. end
复制代码
我把你的dispose注释掉了,dispose后再执行update真的没问题?所以这个回收机制楼主还是需要好好想想的。
另外不显示是y太低导致的。

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

同一片蓝天下,你可曾记起那几年
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
995
在线时间
180 小时
注册时间
2013-2-16
帖子
176
3
 楼主| 发表于 2015-8-23 14:20:46 | 只看该作者
个快快 发表于 2015-8-23 08:18
我把你的dispose注释掉了,dispose后再执行update真的没问题?所以这个回收机制楼主还是需要好好想想的。
...

关于dispose,像这样的如果在数组里加入一个个实例,那如果把其中一个dispose掉那么在这个位置上还有没有元素?
也就是说
a = Array.new
3.times { |i| a.push(Sprite.new) }
a[1].dispose
此时a是[实例1,实例3]还是 [实例1,实例2,实例3] 还是[实例1,nil,实例3]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
197
在线时间
166 小时
注册时间
2009-5-2
帖子
300

开拓者

4
发表于 2015-8-23 15:38:22 | 只看该作者
clear仔 发表于 2015-8-23 14:20
关于dispose,像这样的如果在数组里加入一个个实例,那如果把其中一个dispose掉那么在这个位置上还有没有 ...

[实例1,实例2,实例3]
但是这个实例2明显不会再显示了。dispose并不是把他变成Nil,只是销毁渲染的部分,所以还是存在的。
同一片蓝天下,你可曾记起那几年
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
995
在线时间
180 小时
注册时间
2013-2-16
帖子
176
5
 楼主| 发表于 2015-8-23 20:25:43 手机端发表。 | 只看该作者
个快快 发表于 2015-8-23 15:38
[实例1,实例2,实例3]
但是这个实例2明显不会再显示了。dispose并不是把他变成Nil,只是销毁渲染的部分 ...

所以只是在数组里还有个位置但是实际并不占用内存了是吗。谢谢解答
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-23 05:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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