Project1

标题: 怎么判断某动画还在播放中 [打印本页]

作者: 兔毛鹿    时间: 2012-11-15 09:37
标题: 怎么判断某动画还在播放中
本帖最后由 兔毛鹿 于 2012-11-16 10:00 编辑

在scene map 脚本中需要判断11号动画是否还在播放,如果播放结束了就开启一开关
作者: 兔毛鹿    时间: 2012-11-15 13:58
好吧谢谢,我用 if $game_map.events[1].animation_id > 0 来判断,结果不正确
作者: 沙漠点灰    时间: 2012-11-15 17:40
本帖最后由 沙漠点灰 于 2012-11-15 17:44 编辑

如果lz那样的话到有方法:
RUBY 代码复制
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     def anima?
  4.       @_loop_animation or  @_animation
  5.     end
  6.   end
  7. end
  8. class Spriteset_Map
  9.   def initialize
  10.     # 生成显示端口
  11.     @viewport1 = Viewport.new(0, 0, 640, 480)
  12.     @viewport2 = Viewport.new(0, 0, 640, 480)
  13.     @viewport3 = Viewport.new(0, 0, 640, 480)
  14.     @viewport2.z = 200
  15.     @viewport3.z = 5000
  16.     # 生成元件地图
  17.     @tilemap = Tilemap.new(@viewport1)
  18.     @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  19.     for i in 0..6
  20.       autotile_name = $game_map.autotile_names[i]
  21.       @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
  22.     end
  23.     @tilemap.map_data = $game_map.data
  24.     @tilemap.priorities = $game_map.priorities
  25.     # 生成远景平面
  26.     @panorama = Plane.new(@viewport1)
  27.     @panorama.z = -1000
  28.     # 生成雾平面
  29.     @fog = Plane.new(@viewport1)
  30.     @fog.z = 3000
  31.     # 生成角色活动块
  32.     @character_sprites = []
  33.     for i in $game_map.events.keys.sort
  34.       sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  35.       sprite.character.sprite = sprite
  36.       @character_sprites.push(sprite)
  37.     end
  38.     @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
  39.     # 生成天气
  40.     @weather = RPG::Weather.new(@viewport1)
  41.     # 生成图片
  42.     @picture_sprites = []
  43.     for i in 1..50
  44.       @picture_sprites.push(Sprite_Picture.new(@viewport2,
  45.       $game_screen.pictures[i]))
  46.     end
  47.     # 生成计时器块
  48.     @timer_sprite = Sprite_Timer.new
  49.     # 刷新画面
  50.     update
  51.   end
  52.   def dispose
  53.     # 释放元件地图
  54.     @tilemap.tileset.dispose
  55.     for i in 0..6
  56.       @tilemap.autotiles[i].dispose
  57.     end
  58.     @tilemap.dispose
  59.     # 释放远景平面
  60.     @panorama.dispose
  61.     # 释放雾平面
  62.     @fog.dispose
  63.     # 释放角色活动块
  64.     for sprite in @character_sprites
  65.       sprite.character.sprite = nil
  66.       sprite.dispose
  67.     end
  68.     # 释放天候
  69.     @weather.dispose
  70.     # 释放图片
  71.     for sprite in @picture_sprites
  72.       sprite.dispose
  73.     end
  74.     # 释放计时器块
  75.     @timer_sprite.dispose
  76.     # 释放显示端口
  77.     @viewport1.dispose
  78.     @viewport2.dispose
  79.     @viewport3.dispose
  80.   end
  81. end
  82. class Game_Character
  83.   attr_accessor:sprite
  84. end


判断用:
if $game_map.events[1].sprite.anima?
...........
end
作者: 兔毛鹿    时间: 2012-11-16 09:59
沙漠点灰 发表于 2012-11-15 17:40
如果lz那样的话到有方法:
module RPG
  class Sprite < ::Sprite

很好用谢谢,能不能还判断出1号事件上的50号动画是否在播放?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1