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

Project1

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

好吧,无聊的动画播放

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
跳转到指定楼层
1
发表于 2008-7-22 05:44:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
只不过是 缩放,或者是放大而已。。。。怎么调用,在那里调用,看用他的人了


  1. class Sprite_C < Sprite_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对像
  4.   #     viewport  : 视口
  5.   #     zoom      : 放大率
  6.   #--------------------------------------------------------------------------
  7.   def initialize(viewport,index,zoom = nil)
  8.     super(viewport)
  9.     @index = index
  10.     @zoom = zoom
  11.     self.x = 100
  12.     self.y = 100
  13.     self.z = 100
  14.     setup
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 刷新画面
  18.   #--------------------------------------------------------------------------
  19.   def setup
  20.     if @index != 0
  21.       animation = $data_animations[@index]
  22.       start_animation(animation)
  23.       @index = 0
  24.     end
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 设置动画活动块
  28.   #     frame : 帧数据 (RPG::Animation::Frame)
  29.   #--------------------------------------------------------------------------
  30.   def animation_set_sprites(frame,zoom = nil)
  31.     cell_data = frame.cell_data
  32.     for i in 0..15
  33.       sprite = @animation_sprites[i]
  34.       next if sprite == nil
  35.       pattern = cell_data[i, 0]
  36.       if pattern == nil or pattern == -1
  37.         sprite.visible = false
  38.         next
  39.       end
  40.       if pattern < 100
  41.         sprite.bitmap = @animation_bitmap1
  42.       else
  43.         sprite.bitmap = @animation_bitmap2
  44.       end
  45.       sprite.visible = true
  46.       sprite.src_rect.set(pattern % 5 * 192,
  47.         pattern % 100 / 5 * 192, 192, 192)
  48.       if @animation_mirror
  49.         sprite.x = @animation_ox - cell_data[i, 1]
  50.         sprite.y = @animation_oy - cell_data[i, 2]
  51.         sprite.angle = (360 - cell_data[i, 4])
  52.         sprite.mirror = (cell_data[i, 5] == 0)
  53.       else
  54.         sprite.x = @animation_ox + cell_data[i, 1]
  55.         sprite.y = @animation_oy + cell_data[i, 2]
  56.         sprite.angle = cell_data[i, 4]
  57.         sprite.mirror = (cell_data[i, 5] == 1)
  58.       end
  59.       sprite.z = self.z + 300
  60.       sprite.ox = 96
  61.       sprite.oy = 96
  62.       sprite.zoom_x = cell_data[i, 3] / 100.0
  63.       sprite.zoom_y = cell_data[i, 3] / 100.0
  64.       #----------------------
  65.       if zoom
  66.         sprite.zoom_x = zoom * sprite.zoom_x
  67.         sprite.zoom_y = zoom * sprite.zoom_y
  68.       end
  69.       #----------------------
  70.       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  71.       sprite.blend_type = cell_data[i, 7]
  72.     end
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 刷新动画
  76.   #--------------------------------------------------------------------------
  77.   def update_animation
  78.     if @animation_duration > 0
  79.       frame_index = @animation.frame_max - (@animation_duration + 3) / 4
  80.       animation_set_sprites(@animation.frames[frame_index],@zoom)
  81.       for timing in @animation.timings
  82.         if timing.frame == frame_index
  83.           animation_process_timing(timing)
  84.         end
  85.       end
  86.     else
  87.       dispose_animation
  88.     end
  89.   end
  90. end
复制代码


调用

这个是在 自己作的scene里的。在地图上 播放缩小的动画或者 放大的动画。。。把scene改一下即可

  1. class A < Scene_Base
  2.   def start
  3.     @viewport = Viewport.new(0, 0, 544, 416)
  4.     @sp = Sprite_C.new(@viewport,2,0.5)
  5.   end
  6.   def update
  7.     if @sp.animation?
  8.       @sp.update
  9.     else
  10.       @sp.dispose_animation
  11.       @sp.dispose
  12.       @viewport.dispose
  13.       @sp = nil
  14.       @viewport = Viewport.new(0, 0, 544, 416)
  15.       @sp = Sprite_C.new(@viewport,2,0.5)
  16.     end
  17.   end
  18. end
复制代码


特别感谢 kiss 后面的记不住了。。。告诉我 viewport 没有释放{/hx}

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
2
 楼主| 发表于 2008-7-22 06:09:14 | 只看该作者
鄙人觉得。。。绝对毫无技术性可言。。。仅是自娱自乐。。。或许有人想缩放就不用自己再去改了{/gg}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
10
在线时间
0 小时
注册时间
2008-7-24
帖子
2
3
发表于 2008-7-24 04:08:03 | 只看该作者
我跟你想的一样……
我的世界,我的梦想, 欢迎来到我的个人主页: www.ghostfire.com.cn (还没搞好)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
4
发表于 2008-7-24 21:34:15 | 只看该作者
缩放=缩小/放大
看起来不错~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 12:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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