查看: 1686|回复: 4

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

[复制链接]
梦石
0
星屑
995
在线时间
180 小时
注册时间
2013-2-16
回帖
146
发表于 2015-8-23 00:29:51 | 显示全部楼层 |阅读模式

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

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

×
想在标题做个荧光缓慢飘起或者散开的效果,然后自己糊了一下代码之后再TITLE里调用UPDATE,发现虽然没有报错但是一点效果都没有。
[pre lang="ruby"]class Fire_Flies < Sprite
  def initialize(type)#rise:1   spread :2
    super(nil)
    @xadd_count = 0.0
    @yadd_count = 0.0
    @oadd_count = 0.0
    @life = 300 - rand(100)
    @during = 0
    @type = type
    case @type
    when 1
     @aim = [0,rand(30)+100]
     @speed_x = 0.0#f
     @speed_y = @aim[1].to_f/@life#f
     x = rand(640)
     hue = rand(360)
     zoom = rand(0)
   
     self.bitmap = Bitmap.new("Graphics/Pictures/fireflies.png")
     self.ox = self.bitmap.width/2
     self.oy = 0
     self.opacity = 250
     self.bitmap.hue_change(hue)
     self.x = x
     self.y = 480
     self.zoom_x = zoom
     self.zoom_y = zoom
   
    when 2
      @aim = [rand(30)+50,rand(30)+50]
      @speed_x = @aim[0].to_f/@life#f
      @speed_y = @aim[1].to_f/@life#f
      zoom = rand(0)
      self.bitmap = Bitmap.new("Graphics/Pictures/fireflies.png")
      self.ox = self.bitmap.width/2
      self.oy = self.bitmap.height/2
      self.opacity = 1
      self.x = Graphics.width/2
      self.y = Graphics.width/2
      self.zoom_x = zoom
      self.zoom_y = zoom
      
    end
  end
  
  def fireflies_update
    @xadd_count += @speed_x
    @yadd_count += @speed_y
    @oadd_count += 250.0/@life
    if @xadd_count >= 1
     self.x += @xadd_count
     @xadd_count -= 1
    end
    if @yadd_count >= 1
     self.x += @yadd_count
     @yadd_count -= 1
    end
    if @oadd_count >= 1
      if @during < @life / 3 and @type == 2
       self.opacity += @oadd_count
      else
       self.opacity -= @oadd_count
      end
     
     @oadd_count -= 1
   end
   @during += 1
   self.dispose if @during == @life
end
end
[/pre]

在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
梦石
0
星屑
197
在线时间
166 小时
注册时间
2009-5-2
回帖
264

开拓者

发表于 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 认可答案

查看全部评分

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

使用道具 举报

梦石
0
星屑
995
在线时间
180 小时
注册时间
2013-2-16
回帖
146
 楼主| 发表于 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]
回复

使用道具 举报

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

开拓者

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

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

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部