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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
53
在线时间
161 小时
注册时间
2011-11-21
帖子
51
跳转到指定楼层
1
发表于 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

Lv2.观梦者

梦石
0
星屑
503
在线时间
1478 小时
注册时间
2011-9-17
帖子
1316

开拓者贵宾

2
发表于 2012-3-24 16:06:29 | 只看该作者
本帖最后由 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

点评

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-10 20:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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