Project1

标题: 仙剑阵法的图片用变量更换问题…… [打印本页]

作者: 君迁子    时间: 2009-3-29 23:55
标题: 仙剑阵法的图片用变量更换问题……
我用了这种方法在战斗中显示了阵法图片:
http://rpg.blue/web/htm/news449.htm

并且用变量区分了一下,如果变量X为1,显示图片1,以此类推……

@battleback_5_sprite = Sprite.new(@viewport2)
       if $game_variables[1] == 1
         @battleback_5_sprite.bitmap = RPG::Cache.battleback("1")
       end
       if $game_variables[1] == 2
         @battleback_5_sprite.bitmap = RPG::Cache.battleback("2")
       end
       if $game_variables[1] == 3
         @battleback_5_sprite.bitmap = RPG::Cache.battleback("3")
       end
       if $game_variables[1] == 4
         @battleback_5_sprite.bitmap = RPG::Cache.battleback("4")
       end
       if $game_variables[1] == 5
         @battleback_5_sprite.bitmap = RPG::Cache.battleback("5")
       end
       @battleback_5_sprite.opacity = 0

但是在战斗中使用公共事件改变了变量1,图片是不会变的……
问题工程在此:http://rpg.blue/upload_program/d/君迁子_Project1_118770888.rar
直接在脚本里搜索“五行阵”就能找到更改的地方了~ [LINE]1,#dddddd[/LINE]此贴于 2009-3-29 18:17:41 被版主redant提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: redant    时间: 2009-3-30 02:17
  1. #==============================================================================
  2. # ■ Spriteset_Battle
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  5. # 的内部使用。
  6. #==============================================================================

  7. class Spriteset_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :viewport1                # 敌人方的显示端口
  12.   attr_reader   :viewport2                # 角色方的显示端口
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化变量
  15.   #--------------------------------------------------------------------------
  16.   def initialize
  17.     # 生成显示端口
  18.     @viewport1 = Viewport.new(0, 0, 640, 320)
  19.     @viewport2 = Viewport.new(0, 0, 640, 480)
  20.     @viewport3 = Viewport.new(0, 0, 640, 480)
  21.     @viewport4 = Viewport.new(0, 0, 640, 480)
  22.     @viewport2.z = 101
  23.     @viewport3.z = 200
  24.     @viewport4.z = 5000
  25.     # 生成战斗背景活动块
  26.     @battleback_sprite = Sprite.new(@viewport1)
  27.     #================五行阵================
  28. @battleback_5_sprite = Sprite.new(@viewport1)
  29.        if $game_variables[12] == 1 #金
  30.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("1")
  31.        end
  32.       
  33.        if $game_variables[12] == 2 #木
  34.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("2")
  35.        end
  36.       
  37.        if $game_variables[12] == 3 #水
  38.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("3")
  39.        end
  40.       
  41.        if $game_variables[12] == 4 #火
  42.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("4")
  43.        end
  44.       
  45.        if $game_variables[12] == 5 #土
  46.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("5")
  47.        end

  48.      


  49.     # 生成敌人活动块
  50.     @enemy_sprites = []
  51.     for enemy in $game_troop.enemies.reverse
  52.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  53.     end
  54.     # 生成敌人活动块
  55.     @actor_sprites = []
  56.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  57.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  58.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  59.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  60.     # 生成天候
  61.     @weather = RPG::Weather.new(@viewport1)
  62.     # 生成图片活动块
  63.     @picture_sprites = []
  64.     for i in 51..100
  65.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  66.         $game_screen.pictures[i]))
  67.     end
  68.     # 生成计时器块
  69.     @timer_sprite = Sprite_Timer.new
  70.     # 刷新画面
  71.     # refresh
  72.    
  73.     update
  74.    
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 释放
  78.   #--------------------------------------------------------------------------
  79.   def dispose
  80.     # 如果战斗背景位图存在的情况下就释放
  81.     if @battleback_sprite.bitmap != nil
  82.       @battleback_sprite.bitmap.dispose
  83.     end
  84.     # 释放战斗背景活动块
  85.     @battleback_sprite.dispose
  86.     # 释放敌人活动块、角色活动块
  87.     for sprite in @enemy_sprites + @actor_sprites
  88.       sprite.dispose
  89.     end
  90.     # 释放天候
  91.     @weather.dispose
  92.     # 释放图片活动块
  93.     for sprite in @picture_sprites
  94.       sprite.dispose
  95.     end
  96.     # 释放计时器活动块
  97.     @timer_sprite.dispose
  98.     # 释放显示端口
  99.     @viewport1.dispose
  100.     @viewport2.dispose
  101.     @viewport3.dispose
  102.     @viewport4.dispose
  103.     @battleback_5_sprite.dispose#五行阵
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 显示效果中判定
  107.   #--------------------------------------------------------------------------
  108.   def effect?
  109.     # 如果是在显示效果中的话就返回 true
  110.     for sprite in @enemy_sprites + @actor_sprites
  111.       return true if sprite.effect?
  112.     end
  113.     return false
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 刷新画面
  117.   #--------------------------------------------------------------------------
  118.   def update
  119.    
  120.    

  121.     # 刷新角色的活动块 (对应角色的替换)
  122.     @actor_sprites[0].battler = $game_party.actors[0]
  123.     @actor_sprites[1].battler = $game_party.actors[1]
  124.     @actor_sprites[2].battler = $game_party.actors[2]
  125.     @actor_sprites[3].battler = $game_party.actors[3]
  126.     # 战斗背景的文件名与现在情况有差异的情况下
  127.     if @battleback_name != $game_temp.battleback_name
  128.       @battleback_name = $game_temp.battleback_name
  129.       if @battleback_sprite.bitmap != nil
  130.         @battleback_sprite.bitmap.dispose
  131.       end
  132.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  133.       @battleback_sprite.src_rect.set(0, 0, 640, 320)
  134.     end
  135.     # 刷新战斗者的活动块
  136.     for sprite in @enemy_sprites + @actor_sprites
  137.       
  138.       sprite.update
  139.     end
  140.     # 刷新天气图形
  141.     @weather.type = $game_screen.weather_type
  142.     @weather.max = $game_screen.weather_max
  143.     @weather.update
  144.     # 刷新图片活动块
  145.     for sprite in @picture_sprites
  146.       sprite.update
  147.     end
  148.    
  149.     # 刷新计时器活动块
  150.     @timer_sprite.update
  151.     # 设置画面的色调与震动位置
  152.     @viewport1.tone = $game_screen.tone
  153.     @viewport1.ox = $game_screen.shake
  154.     # 设置画面的闪烁色
  155.     @viewport4.color = $game_screen.flash_color
  156.     # 刷新显示端口
  157.      if $game_variables[12] == 1 #金
  158.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("1")
  159.        end
  160.       
  161.        if $game_variables[12] == 2 #木
  162.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("2")
  163.        end
  164.       
  165.        if $game_variables[12] == 3 #水
  166.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("3")
  167.        end
  168.       
  169.        if $game_variables[12] == 4 #火
  170.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("4")
  171.        end
  172.       
  173.        if $game_variables[12] == 5 #土
  174.          @battleback_5_sprite.bitmap = RPG::Cache.battleback("5")
  175.        end
  176.     @viewport1.update
  177.     @viewport2.update
  178.     @viewport4.update
  179.     #if $game_temp.battle_turn <= 10
  180.      #@battleback_5_sprite.opacity += 5 if @battleback_5_sprite.opacity < 255
  181.     #else
  182.      #@battleback_5_sprite.opacity -= 5 if @battleback_5_sprite.opacity > 0
  183.     #end#五行阵
  184.     #if $game_variables[12] != 1
  185.       
  186.     #refresh
  187. # end
  188.   
  189.   end

  190.      
  191.    
  192.   end
复制代码


可能会卡 你试试 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 君迁子    时间: 2009-3-30 02:40
感觉不是很卡……可能是内存还够吧,多谢了TvT [LINE]1,#dddddd[/LINE]版主对此帖的评论:『不客气。』,积分『-0』。这些被扣积分的一半会用于对本帖正确答案的悬赏。




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