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

Project1

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

[原创发布] [增补功能]循环动画

 关闭 [复制链接]

Lv3.寻梦者

酱油的

梦石
0
星屑
970
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

跳转到指定楼层
1
发表于 2008-4-26 18:07:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 禾西 于 2011-4-20 06:19 编辑

做遊戲時候寫出來的副産品
作用:在固定位置不停播放循環動畫,如同窗口一樣。

調用方法:Sprite_Animation.new(x,y,z)
類方法:

設置/更改循環動畫ID:
.id =


暫停:
.pause = true


隱藏:
.visible = false

坐標:
.x =
.y =
.z =
  1. #==============================================================================
  2. # ■ Sprite_Animation / 動畫使用增強
  3. #------------------------------------------------------------------------------

  4. class Sprite_Animation < RPG::Sprite
  5.   #--------------------------------------------------------------------------
  6.   # ● 取得動畫ID
  7.   #--------------------------------------------------------------------------
  8.   attr_accessor :id
  9.   attr_accessor :pause
  10.   attr_accessor :visible
  11.   #--------------------------------------------------------------------------
  12.   # ● 初始化物件
  13.   #     viewport : 顯示連接埠
  14.   #--------------------------------------------------------------------------
  15.   def initialize(x=0,y=0,z=5000)
  16.     @viewport = Viewport.new(0, 0, 640, 480)
  17.     @viewport.z = z
  18.     super(@viewport)
  19.     self.id = 0
  20.     self.pause   = false
  21.     self.visible = true
  22.     # 設定活動區塊的座標
  23.     self.x = x
  24.     self.y = y
  25.     self.z = z
  26.     update
  27.   end
  28.   alias old_update update
  29.   #--------------------------------------------------------------------------
  30.   # ● 更新畫面
  31.   #--------------------------------------------------------------------------
  32.   def update
  33.     if self.pause or self.id == 0
  34.       return
  35.     else
  36.       old_update
  37.     end
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 一次性用完即弃的动画
  41.   #--------------------------------------------------------------------------
  42.   def self.show(id,x=0,y=0)
  43.     s = self.new(x, y)
  44.     a = $data_animations[id]
  45.     s.animation(a,false)
  46.     while s.effect?
  47.       s.old_update
  48.       Graphics.update
  49.     end
  50.     s.dispose
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 釋放
  54.   #--------------------------------------------------------------------------
  55.   def dispose
  56.     (self.bitmap.dispose) unless (self.bitmap == nil)
  57.     @viewport.dispose
  58.     @viewport.dispose
  59.     super
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 更改動畫
  63.   #--------------------------------------------------------------------------
  64.   def id=(int)
  65.     @id = int
  66.     if id == 0
  67.       dispose_loop_animation
  68.       return
  69.     end
  70.     animation = $data_animations[self.id]
  71.     loop_animation(animation)
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 更改可視化
  75.   #--------------------------------------------------------------------------
  76.   def visible=(bool)
  77.     super(bool)
  78.     if bool
  79.       animation = $data_animations[self.id]
  80.       loop_animation(animation)
  81.     else
  82.       dispose_loop_animation
  83.     end
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 單幀設置算法
  87.   #--------------------------------------------------------------------------
  88.   def animation_set_sprites(sprites, cell_data, position)
  89.     for i in 0..15
  90.       sprite = sprites[i]
  91.       pattern = cell_data[i, 0]
  92.       if sprite == nil or pattern == nil or pattern == -1
  93.         sprite.visible = false if sprite != nil
  94.         next
  95.       end
  96.       sprite.visible = true
  97.       sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  98.       if position == 3
  99.         if self.viewport != nil
  100.           sprite.x = self.viewport.rect.width / 2
  101.           sprite.y = self.viewport.rect.height - 160
  102.         else
  103.           sprite.x = 320
  104.           sprite.y = 240
  105.         end
  106.       else
  107.         sprite.x = self.x - self.ox + self.src_rect.width / 2
  108.         sprite.y = self.y - self.oy + self.src_rect.height / 2
  109.         sprite.y -= self.src_rect.height / 4 if position == 0
  110.         sprite.y += self.src_rect.height / 4 if position == 2
  111.       end
  112.       sprite.x += cell_data[i, 1]
  113.       sprite.y += cell_data[i, 2]
  114.       sprite.z = 2000
  115.       sprite.ox = 96
  116.       sprite.oy = 96
  117.       sprite.zoom_x = cell_data[i, 3] / 100.0
  118.       sprite.zoom_y = cell_data[i, 3] / 100.0
  119.       sprite.angle = cell_data[i, 4]
  120.       sprite.mirror = (cell_data[i, 5] == 1)
  121.       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  122.       sprite.blend_type = cell_data[i, 7]
  123.     end
  124.   end
  125. end
复制代码
技術含量基本上等於零……
不擅長表達,需要播放多個動畫的人應該知道有甚麽用途==|||
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
115
在线时间
3 小时
注册时间
2008-1-12
帖子
380
2
发表于 2008-4-26 18:40:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
970
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

3
 楼主| 发表于 2008-4-26 19:26:44 | 只看该作者
有時有必要,可能你沒有碰上吧?
比如戰鬥全動畫腳本的待機動畫就是需要。
動畫描述附加狀態組也需要。
一些循環表示的動畫也也需要。
甚至可以用來寫烟花,流星雨,閃電等等的天氣腳本……等等。
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

悔恨的天使

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-26
帖子
726
4
发表于 2008-4-26 21:46:26 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

5
发表于 2008-4-26 21:56:11 | 只看该作者
那个,其实我想说我家阿雪是这只……= =
http://i35.photobucket.com/albums/d159/nightendless/je1-1.png
脚本……抬头望天……收下来慢慢研究……
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

悔恨的天使

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-26
帖子
726
6
发表于 2009-6-12 08:00:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
970
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

7
 楼主| 发表于 2008-4-27 06:53:04 | 只看该作者
看來阿雪沒有看到這句:
技術含量基本上等於零……

本來就沒有技術含量,就是抽出來方便使用而已。
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

8
发表于 2008-4-27 07:41:46 | 只看该作者
这个脚本不错……收下了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
9
发表于 2008-4-27 19:13:33 | 只看该作者
我本来打算制作这个,
来用到我的恶魔城探索地图系统,
角色位置光点循环动画,
沒想到禾西先做出來了,

嘿嘿~~~现学现用(恶魔城探索地图系统版本又要提升了)

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-12-15
帖子
238
10
发表于 2008-4-27 19:49:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 08:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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