Project1

标题: 標題動畫腳本卡住,求高手救助! [打印本页]

作者: azlunvice    时间: 2012-3-24 14:33
标题: 標題動畫腳本卡住,求高手救助!
小弟新手,最近參考了一個外國的範例腳本,想寫出一個在標題畫面很多光點飛來飛去的腳本,可是卻卡住了,故來求教!謝謝。
以下為腳本:

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  
  
enddsu_plus_rewardpost_czw
作者: iisnow    时间: 2012-3-24 16:06
本帖最后由 iisnow 于 2012-3-24 16:07 编辑

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

然后只需要考虑3步就可以了:实例化new,更新update,释放dispose
用数组一起管理即可,可能还要调整下显示的层次
RUBY 代码复制
  1. class Scene_Title
  2.  
  3.   MAX_FLY  = 90   # Firfly的数目(图大的话,数字就要小,不然卡)
  4.  
  5.   alias :iisnow_start :start
  6.   def start
  7.     iisnow_start
  8.     create_firefly
  9.     @command_window.z = 102 # 使得窗口在光点上面
  10.   end
  11.  
  12.   def create_firefly
  13.     @fly_sprite = []
  14.     MAX_FLY.times{@fly_sprite << Firefly.new}
  15.     @fly_sprite.each{|s| s.z = 101}  # 比上的设置值小,比100大即可
  16.   end
  17.  
  18.   def update
  19.     super
  20.     @fly_sprite.each{|s| s.update }
  21.   end
  22.  
  23.   alias :iisnow_terminate :terminate
  24.   def terminate
  25.     iisnow_terminate
  26.     dispose_firefly
  27.   end
  28.  
  29.   def dispose_firefly
  30.     @fly_sprite.each{|s| s.dispose}
  31.   end
  32.  
  33. end
  34.  
  35. class Firefly < Sprite
  36.  
  37.   def initialize(viewport = nil)
  38.       super(viewport)
  39.       self.bitmap = Cache.title2("Firefly")
  40.       reset_setting
  41.   end  
  42.  
  43.   def reset_setting
  44.       zoom = (50 + rand(100)) / 100.1
  45.       self.zoom_x = zoom
  46.       self.zoom_y = zoom
  47.       self.x = rand(544)
  48.       self.y = rand(416 + self.bitmap.height)
  49.       self.opacity = 0
  50.       self.angle = rand(360)
  51.       self.blend_type = 1
  52.       @speed_x = 0
  53.       @speed_y = [[rand(4), 4].min, 1].max
  54.       @speed_a = rand(3)
  55.   end
  56.  
  57.   def dispose
  58.       super
  59.       self.bitmap.dispose
  60.   end  
  61.  
  62.   def update
  63.       super
  64.       self.x += @speed_x
  65.       self.y -= @speed_y
  66.       self.angle += @speed_a      
  67.       self.opacity += 5
  68.       reset_setting if self.y < 0
  69.   end  
  70.  
  71. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1