赞 | 0 |
VIP | 10 |
好人卡 | 49 |
积分 | 10 |
经验 | 22958 |
最后登录 | 2020-8-1 |
在线时间 | 2161 小时 |
Lv3.寻梦者 酱油的
- 梦石
- 0
- 星屑
- 1030
- 在线时间
- 2161 小时
- 注册时间
- 2007-12-22
- 帖子
- 3271
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 禾西 于 2011-4-20 06:19 编辑
做遊戲時候寫出來的副産品
作用:在固定位置不停播放循環動畫,如同窗口一樣。
調用方法:Sprite_Animation.new(x,y,z)
類方法:
設置/更改循環動畫ID:
暫停:
隱藏:
坐標:
- #==============================================================================
- # ■ Sprite_Animation / 動畫使用增強
- #------------------------------------------------------------------------------
- class Sprite_Animation < RPG::Sprite
- #--------------------------------------------------------------------------
- # ● 取得動畫ID
- #--------------------------------------------------------------------------
- attr_accessor :id
- attr_accessor :pause
- attr_accessor :visible
- #--------------------------------------------------------------------------
- # ● 初始化物件
- # viewport : 顯示連接埠
- #--------------------------------------------------------------------------
- def initialize(x=0,y=0,z=5000)
- @viewport = Viewport.new(0, 0, 640, 480)
- @viewport.z = z
- super(@viewport)
- self.id = 0
- self.pause = false
- self.visible = true
- # 設定活動區塊的座標
- self.x = x
- self.y = y
- self.z = z
- update
- end
- alias old_update update
- #--------------------------------------------------------------------------
- # ● 更新畫面
- #--------------------------------------------------------------------------
- def update
- if self.pause or self.id == 0
- return
- else
- old_update
- end
- end
- #--------------------------------------------------------------------------
- # ● 一次性用完即弃的动画
- #--------------------------------------------------------------------------
- def self.show(id,x=0,y=0)
- s = self.new(x, y)
- a = $data_animations[id]
- s.animation(a,false)
- while s.effect?
- s.old_update
- Graphics.update
- end
- s.dispose
- end
- #--------------------------------------------------------------------------
- # ● 釋放
- #--------------------------------------------------------------------------
- def dispose
- (self.bitmap.dispose) unless (self.bitmap == nil)
- @viewport.dispose
- @viewport.dispose
- super
- end
- #--------------------------------------------------------------------------
- # ● 更改動畫
- #--------------------------------------------------------------------------
- def id=(int)
- @id = int
- if id == 0
- dispose_loop_animation
- return
- end
- animation = $data_animations[self.id]
- loop_animation(animation)
- end
- #--------------------------------------------------------------------------
- # ● 更改可視化
- #--------------------------------------------------------------------------
- def visible=(bool)
- super(bool)
- if bool
- animation = $data_animations[self.id]
- loop_animation(animation)
- else
- dispose_loop_animation
- end
- end
- #--------------------------------------------------------------------------
- # ● 單幀設置算法
- #--------------------------------------------------------------------------
- def animation_set_sprites(sprites, cell_data, position)
- for i in 0..15
- sprite = sprites[i]
- pattern = cell_data[i, 0]
- if sprite == nil or pattern == nil or pattern == -1
- sprite.visible = false if sprite != nil
- next
- end
- sprite.visible = true
- sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
- if position == 3
- if self.viewport != nil
- sprite.x = self.viewport.rect.width / 2
- sprite.y = self.viewport.rect.height - 160
- else
- sprite.x = 320
- sprite.y = 240
- end
- else
- sprite.x = self.x - self.ox + self.src_rect.width / 2
- sprite.y = self.y - self.oy + self.src_rect.height / 2
- sprite.y -= self.src_rect.height / 4 if position == 0
- sprite.y += self.src_rect.height / 4 if position == 2
- end
- sprite.x += cell_data[i, 1]
- sprite.y += cell_data[i, 2]
- sprite.z = 2000
- sprite.ox = 96
- sprite.oy = 96
- sprite.zoom_x = cell_data[i, 3] / 100.0
- sprite.zoom_y = cell_data[i, 3] / 100.0
- sprite.angle = cell_data[i, 4]
- sprite.mirror = (cell_data[i, 5] == 1)
- sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
- sprite.blend_type = cell_data[i, 7]
- end
- end
- end
复制代码 技術含量基本上等於零……
不擅長表達,需要播放多個動畫的人應該知道有甚麽用途==||| |
|