查看: 3194|回复: 1

[已经解决] 標題動畫腳本卡住,求高手救助!

[复制链接]
梦石
0
星屑
39
在线时间
166 小时
注册时间
2011-11-21
回帖
45
发表于 2012-3-24 14:33:55 | 显示全部楼层 |阅读模式

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

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

×
小弟新手,最近參考了一個外國的範例腳本,想寫出一個在標題畫面很多光點飛來飛去的腳本,可是卻卡住了,故來求教!謝謝。
以下為腳本:

class Firefly < Sprite
  def initialize(viewport = nil)
      super(viewport)
      self.bitmap = Cache.title2("Firefly")
      reset_setting
  end  
         
  def reset_setting
      zoom = (50 + rand(100)) / 100.1
      self.zoom_x = zoom
      self.zoom_y = zoom
      self.x = rand(544)
      self.y = rand(416 + self.bitmap.height)
      self.opacity = 0
      self.angle = rand(360)
      self.blend_type = 1
      @speed_x = 0
      @speed_y = [[rand(4), 4].min, 1].max
      @speed_a = rand(3)
  end
           
  def dispose
      super
      self.bitmap.dispose
  end  
  
  def update
      super
      self.x += @speed_x
      self.y -= @speed_y
      self.angle += @speed_a      
      self.opacity += 5
      reset_setting if self.y < 0
  end  
  
end
梦石
0
星屑
513
在线时间
1479 小时
注册时间
2011-9-17
回帖
1266

开拓者贵宾

发表于 2012-3-24 16:06:29 | 显示全部楼层
本帖最后由 iisnow 于 2012-3-24 16:07 编辑

你都有这个Firefly类的话,这需要在Scene里把它们实例化就可以了啊
但是一个Firefly只有一个点,所以就多实例化几个,最好用数组管理;

然后只需要考虑3步就可以了:实例化new,更新update,释放dispose
用数组一起管理即可,可能还要调整下显示的层次
[pre lang="ruby" line="1"]class Scene_Title
  
  MAX_FLY  = 90   # Firfly的数目(图大的话,数字就要小,不然卡)
  
  alias :iisnow_start :start
  def start
    iisnow_start
    create_firefly
    @command_window.z = 102 # 使得窗口在光点上面
  end
  
  def create_firefly
    @fly_sprite = []
    MAX_FLY.times{@fly_sprite << Firefly.new}
    @fly_sprite.each{|s| s.z = 101}  # 比上的设置值小,比100大即可
  end
  
  def update
    super
    @fly_sprite.each{|s| s.update }
  end
  
  alias :iisnow_terminate :terminate
  def terminate
    iisnow_terminate
    dispose_firefly
  end
  
  def dispose_firefly
    @fly_sprite.each{|s| s.dispose}
  end

end

class Firefly < Sprite
  
  def initialize(viewport = nil)
      super(viewport)
      self.bitmap = Cache.title2("Firefly")
      reset_setting
  end  
         
  def reset_setting
      zoom = (50 + rand(100)) / 100.1
      self.zoom_x = zoom
      self.zoom_y = zoom
      self.x = rand(544)
      self.y = rand(416 + self.bitmap.height)
      self.opacity = 0
      self.angle = rand(360)
      self.blend_type = 1
      @speed_x = 0
      @speed_y = [[rand(4), 4].min, 1].max
      @speed_a = rand(3)
  end
           
  def dispose
      super
      self.bitmap.dispose
  end  
  
  def update
      super
      self.x += @speed_x
      self.y -= @speed_y
      self.angle += @speed_a      
      self.opacity += 5
      reset_setting if self.y < 0
  end  
  
end [/pre]

点评

謝謝您,發覺我真是無腦的新手啊哈哈= =  发表于 2012-3-24 18:51
謝謝您,發覺我真是無腦的新手啊哈哈= =  发表于 2012-3-24 18:51
我帖子中要有是不HX的空白,请Ctrl + A
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部