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

Project1

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

[已经过期] VX的BUG?在地图上播放动画的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
115
在线时间
247 小时
注册时间
2005-12-28
帖子
164
跳转到指定楼层
1
发表于 2010-4-2 14:26:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在地图上新建个事件,然后在事件指令选择显示动画,你会发现,不管你选择动画播放在哪个角色身上,只要你移动的话动画就会一起移动,不知道这是不是VX的BUG。XP都没有这种现象。
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
13 小时
注册时间
2009-8-25
帖子
29
2
发表于 2010-8-21 18:20:53 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
681
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

3
发表于 2010-8-25 21:03:44 | 只看该作者
  1. #==============================================================================
  2. # ■ VX_非官方补丁 1 [动画显示相关修正]    —— By 诡异の猫
  3. #------------------------------------------------------------------------------
  4. #    注意: 此补丁包括官方补丁 VX_SP1
  5. #------------------------------------------------------------------------------
  6. #    补丁内容: 修正地图上播放动画(以画面为中心除外),动画跟随画面移动问题.                                         
  7. #==============================================================================
  8. class Sprite_Base < Sprite
  9.   #--------------------------------------------------------------------------
  10.   # ● 开始播放动画
  11.   #--------------------------------------------------------------------------
  12.   def start_animation(animation, mirror = false)
  13.     dispose_animation
  14.     @animation = animation
  15.     return if @animation == nil
  16.     @animation_mirror = mirror
  17.     @animation_duration = @animation.frame_max * 4 + 1
  18.     load_animation_bitmap
  19.     @animation_sprites = []
  20.     if @animation.position != 3 or not @@animations.include?(animation)
  21.       if @use_sprite
  22.         for i in 0..15
  23.           sprite = ::Sprite.new(viewport)
  24.           sprite.visible = false
  25.           @animation_sprites.push(sprite)
  26.         end
  27.         unless @@animations.include?(animation)
  28.           @@animations.push(animation)
  29.         end
  30.       end
  31.     end
  32.     update_animation
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 释放动画
  36.   #--------------------------------------------------------------------------
  37.   alias eb_sp1_dispose_animation dispose_animation
  38.   def dispose_animation
  39.     eb_sp1_dispose_animation
  40.     @animation_bitmap1 = nil
  41.     @animation_bitmap2 = nil
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 设置动画活动块
  45.   #     frame : 画面数据 (RPG::Animation::Frame)
  46.   #--------------------------------------------------------------------------
  47.   def animation_set_sprites(frame)
  48.     cell_data = frame.cell_data
  49.     for i in 0..15
  50.       sprite = @animation_sprites[i]
  51.       next if sprite == nil
  52.       pattern = cell_data[i, 0]
  53.       if pattern == nil or pattern == -1
  54.         sprite.visible = false
  55.         next
  56.       end
  57.       if pattern < 100
  58.         sprite.bitmap = @animation_bitmap1
  59.       else
  60.         sprite.bitmap = @animation_bitmap2
  61.       end
  62.       sprite.visible = true
  63.       sprite.src_rect.set(pattern % 5 * 192,
  64.         pattern % 100 / 5 * 192, 192, 192)
  65.       position = @animation.position
  66.       if position == 3
  67.         if self.viewport != nil
  68.           sprite.x = self.viewport.rect.width / 2
  69.           sprite.y = self.viewport.rect.height / 2
  70.         else
  71.           sprite.x = 272
  72.           sprite.y = 208
  73.         end
  74.       else
  75.         sprite.x = self.x - self.ox + self.src_rect.width / 2
  76.         sprite.y = self.y - self.oy + self.src_rect.height / 2
  77.         sprite.y -= self.src_rect.height / 2 if position == 0
  78.         sprite.y += self.src_rect.height / 2 if position == 2
  79.       end
  80.       if @animation_mirror
  81.         sprite.x -= cell_data[i, 1]
  82.         sprite.y += cell_data[i, 2]
  83.         sprite.angle = (360 - cell_data[i, 4])
  84.         sprite.mirror = (cell_data[i, 5] == 0)
  85.       else
  86.         sprite.x += cell_data[i, 1]
  87.         sprite.y += cell_data[i, 2]
  88.         sprite.angle = cell_data[i, 4]
  89.         sprite.mirror = (cell_data[i, 5] == 1)
  90.       end
  91.       sprite.z = self.z + 300 + i
  92.       sprite.ox = 96
  93.       sprite.oy = 96
  94.       sprite.zoom_x = cell_data[i, 3] / 100.0
  95.       sprite.zoom_y = cell_data[i, 3] / 100.0
  96.       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  97.       sprite.blend_type = cell_data[i, 7]
  98.     end
  99.   end
  100.    
  101.   def x=(x)
  102.     sx = x - self.x
  103.     if sx != 0
  104.       if @animation_sprites != nil
  105.         for i in 0..15
  106.           @animation_sprites[i].x += sx
  107.         end
  108.       end
  109.     end
  110.     super
  111.   end
  112.   
  113.   def y=(y)
  114.     sy = y - self.y
  115.     if sy != 0
  116.       if @animation_sprites != nil
  117.         for i in 0..15
  118.           @animation_sprites[i].y += sy
  119.         end
  120.       end
  121.     end
  122.     super
  123.   end

  124. end
复制代码
我也出现过这样的问题,用这个就好了。
大家好,我叫节操,有一天,我被吃了。
http://forever-dream.5d6d.com
永恒の梦制作组论坛

129993099
永恒の梦制作组QQ群
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
26 小时
注册时间
2009-11-27
帖子
156
4
发表于 2010-8-27 12:01:22 | 只看该作者
ls正解
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-27 01:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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