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

Project1

 找回密码
 注册会员
搜索

图片标题修改求思路求方法......

查看数: 4384 | 评论数: 13 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-9-20 23:29

正文摘要:

本帖最后由 美丽晨露 于 2013-9-21 15:14 编辑 以下是范例: 我想讲图片标题做出以下效果······ 1.标题背景等待一段帧数后会切换到另一张,以渐变的效果切换······ 2.人物素材显示在右方,两个人 ...

回复

恐惧剑刃 发表于 2013-9-21 22:36:48
美丽晨露 发表于 2013-9-21 21:58
谢谢的说
不知道怎么回事
@people_array[j].bitmap = Bitmap.new(("Graphics/Titles/巫女" ...


13行多了一个括号
  1. #==============================================================================
  2. # ■ Scene_Title
  3. #------------------------------------------------------------------------------
  4. #  处理标题画面的类。
  5. #==============================================================================

  6. class Scene_Title
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 战斗测试的情况下
  12.     if $BTEST
  13.       battle_test
  14.       return
  15.     end
  16.     # 载入数据库
  17.     $data_actors        = load_data("Data/Actors.rxdata")
  18.     $data_classes       = load_data("Data/Classes.rxdata")
  19.     $data_skills        = load_data("Data/Skills.rxdata")
  20.     $data_items         = load_data("Data/Items.rxdata")
  21.     $data_weapons       = load_data("Data/Weapons.rxdata")
  22.     $data_armors        = load_data("Data/Armors.rxdata")
  23.     $data_enemies       = load_data("Data/Enemies.rxdata")
  24.     $data_troops        = load_data("Data/Troops.rxdata")
  25.     $data_states        = load_data("Data/States.rxdata")
  26.     $data_animations    = load_data("Data/Animations.rxdata")
  27.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  28.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  29.     $data_system        = load_data("Data/System.rxdata")
  30.     # 生成系统对像
  31.     $game_system = Game_System.new
  32.     # 生成标题图形
  33.     @sprite= Sprite.new
  34.     @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  35. @rand_people = rand(2) + 1#现在@rand_people的值只可能是1或2
  36. #生成
  37. @people_array = []
  38. for j in 0...2
  39. @people_array[j] = Sprite.new#必须全部Sprite.new
  40. case @rand_people
  41. when 1
  42. #这里的<<和+其实是一样的意思
  43. @people_array[j].bitmap = Bitmap.new("Graphics/Titles/莉德露"<<(j+1).to_s)
  44. when 2
  45. @people_array[j].bitmap = Bitmap.new("Graphics/Titles/巫女"<<(j+1).to_s)
  46. end
  47. #@people_array[j].x = 0
  48. #@people_array[j].y = 0
  49. #@people_array[j].opacity = 255
  50. end
  51.     # 生成命令窗口
  52.     s1 = "新游戏"
  53.     s2 = "继续"
  54.     s3 = "退出"
  55.     @command_window = Window_Command.new(192, [s1, s2, s3])
  56.     @command_window.back_opacity = 160
  57.     @command_window.x = 320 - @command_window.width / 2
  58.     @command_window.y = 288
  59.     # 判定继续的有效性
  60.     # 存档文件一个也不存在的时候也调查
  61.     # 有効为 @continue_enabled 为 true、无效为 false
  62.     @continue_enabled = false
  63.     for i in 0..3
  64.       if FileTest.exist?("Save#{i+1}.rxdata")
  65.         @continue_enabled = true
  66.       end
  67.     end
  68.     # 继续为有效的情况下、光标停止在继续上
  69.     # 无效的情况下、继续的文字显示为灰色
  70.     if @continue_enabled
  71.       @command_window.index = 1
  72.     else
  73.       @command_window.disable_item(1)
  74.     end
  75.     # 演奏标题 BGM
  76.     $game_system.bgm_play($data_system.title_bgm)
  77.     # 停止演奏 ME、BGS
  78.     Audio.me_stop
  79.     Audio.bgs_stop
  80.     # 执行过渡
  81.     Graphics.transition
  82.     # 主循环
  83.     loop do
  84.       # 刷新游戏画面
  85.       Graphics.update
  86.       # 刷新输入信息
  87.       Input.update
  88.       # 刷新画面
  89.       update
  90.       # 如果画面被切换就中断循环
  91.       if $scene != self
  92.         break
  93.       end
  94.     end
  95.     # 装备过渡
  96.     Graphics.freeze
  97.     # 释放命令窗口
  98.     @command_window.dispose
  99.     # 释放标题图形
  100.     @sprite.bitmap.dispose
  101.     @sprite.dispose
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 刷新画面
  105.   #--------------------------------------------------------------------------
  106.   def update
  107.     # 刷新命令窗口
  108.     @command_window.update
  109.     # 按下 C 键的情况下
  110. if Input.trigger?(Input::C)
  111.   case @command_index  
  112.   when 0
  113.    #先释放掉之前的图片否则就效果错误了,要么改透明度重新调图
  114.    #for i in 0...2
  115.    #@people_array[i].bitmap.dispose
  116.    #@people_array[i].dispose
  117.    #end
  118.    #不管怎么分歧,之前图是要影藏的,所以这个可以放在分歧外边
  119.    for i in 0...2
  120.    @people_array[i].opacity = 0
  121.    end
  122.    @people_new.Sprite.new
  123.    case @rand_people#必须带@,否则随机数传不过来(除$)
  124.    when 1
  125.    #方法1
  126.    #读取新的图片
  127.    #@people_array[0].bitmap= Bitmap.new("Graphics/Titles/莉德露3" )
  128.    #方法2
  129.    #因为只是一张图可以改之前图的透明度,重新调图
  130.    @people_new.bitmap = Bitmap.new("Graphics/Titles/莉德露3" )
  131.    when 2
  132.    #方法1
  133.    #读取新的图片
  134.    #@people_array[0].bitmap= Bitmap.new("Graphics/Titles/巫女3" )
  135.    #方法2
  136.    #因为只是一张图可以改之前图的透明度,重新调图
  137.    @people_new.bitmap= Bitmap.new("Graphics/Titles/巫女3" )
  138.    end
  139.    #@people_new.x = 0
  140.    #@people_new.y = 0
  141.    #@people_new.opacity = 255
  142.   for t in 0...5#等待。调整5改变等待时间
  143.    Graphics.update
  144.   end
  145.   command_new_game
  146.   when 1
  147.   command_continue
  148.   when 2
  149.   when 3
  150.   command_shutdown
  151.   end
  152. end
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 命令 : 新游戏
  156.   #--------------------------------------------------------------------------
  157.   def command_new_game
  158.     # 演奏确定 SE
  159.     $game_system.se_play($data_system.decision_se)
  160.     # 停止 BGM
  161.     Audio.bgm_stop
  162.     # 重置测量游戏时间用的画面计数器
  163.     Graphics.frame_count = 0
  164.     # 生成各种游戏对像
  165.     $game_temp          = Game_Temp.new
  166.     $game_system        = Game_System.new
  167.     $game_switches      = Game_Switches.new
  168.     $game_variables     = Game_Variables.new
  169.     $game_self_switches = Game_SelfSwitches.new
  170.     $game_screen        = Game_Screen.new
  171.     $game_actors        = Game_Actors.new
  172.     $game_party         = Game_Party.new
  173.     $game_troop         = Game_Troop.new
  174.     $game_map           = Game_Map.new
  175.     $game_player        = Game_Player.new
  176.     # 设置初期同伴位置
  177.     $game_party.setup_starting_members
  178.     # 设置初期位置的地图
  179.     $game_map.setup($data_system.start_map_id)
  180.     # 主角向初期位置移动
  181.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  182.     # 刷新主角
  183.     $game_player.refresh
  184.     # 执行地图设置的 BGM 与 BGS 的自动切换
  185.     $game_map.autoplay
  186.     # 刷新地图 (执行并行事件)
  187.     $game_map.update
  188.     # 切换地图画面
  189.     $scene = Scene_Map.new
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● 命令 : 继续
  193.   #--------------------------------------------------------------------------
  194.   def command_continue
  195.     # 继续无效的情况下
  196.     unless @continue_enabled
  197.       # 演奏无效 SE
  198.       $game_system.se_play($data_system.buzzer_se)
  199.       return
  200.     end
  201.     # 演奏确定 SE
  202.     $game_system.se_play($data_system.decision_se)
  203.     # 切换到读档画面
  204.     $scene = Scene_Load.new
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 命令 : 退出
  208.   #--------------------------------------------------------------------------
  209.   def command_shutdown
  210.     # 演奏确定 SE
  211.     $game_system.se_play($data_system.decision_se)
  212.     # BGM、BGS、ME 的淡入淡出
  213.     Audio.bgm_fade(800)
  214.     Audio.bgs_fade(800)
  215.     Audio.me_fade(800)
  216.     # 退出
  217.     $scene = nil
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ● 战斗测试
  221.   #--------------------------------------------------------------------------
  222.   def battle_test
  223.     # 载入数据库 (战斗测试用)
  224.     $data_actors        = load_data("Data/BT_Actors.rxdata")
  225.     $data_classes       = load_data("Data/BT_Classes.rxdata")
  226.     $data_skills        = load_data("Data/BT_Skills.rxdata")
  227.     $data_items         = load_data("Data/BT_Items.rxdata")
  228.     $data_weapons       = load_data("Data/BT_Weapons.rxdata")
  229.     $data_armors        = load_data("Data/BT_Armors.rxdata")
  230.     $data_enemies       = load_data("Data/BT_Enemies.rxdata")
  231.     $data_troops        = load_data("Data/BT_Troops.rxdata")
  232.     $data_states        = load_data("Data/BT_States.rxdata")
  233.     $data_animations    = load_data("Data/BT_Animations.rxdata")
  234.     $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
  235.     $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
  236.     $data_system        = load_data("Data/BT_System.rxdata")
  237.     # 重置测量游戏时间用的画面计数器
  238.     Graphics.frame_count = 0
  239.     # 生成各种游戏对像
  240.     $game_temp          = Game_Temp.new
  241.     $game_system        = Game_System.new
  242.     $game_switches      = Game_Switches.new
  243.     $game_variables     = Game_Variables.new
  244.     $game_self_switches = Game_SelfSwitches.new
  245.     $game_screen        = Game_Screen.new
  246.     $game_actors        = Game_Actors.new
  247.     $game_party         = Game_Party.new
  248.     $game_troop         = Game_Troop.new
  249.     $game_map           = Game_Map.new
  250.     $game_player        = Game_Player.new
  251.     # 设置战斗测试用同伴
  252.     $game_party.setup_battle_test_members
  253.     # 设置队伍 ID、可以逃走标志、战斗背景
  254.     $game_temp.battle_troop_id = $data_system.test_troop_id
  255.     $game_temp.battle_can_escape = true
  256.     $game_map.battleback_name = $data_system.battleback_name
  257.     # 演奏战斗开始 BGM
  258.     $game_system.se_play($data_system.battle_start_se)
  259.     # 演奏战斗 BGM
  260.     $game_system.bgm_play($game_system.battle_bgm)
  261.     # 切换到战斗画面
  262.     $scene = Scene_Battle.new
  263.   end
  264. end
复制代码

评分

参与人数 1星屑 +90 收起 理由
myownroc + 90 应该不会有错了。。。

查看全部评分

myownroc 发表于 2013-9-21 22:26:21
美丽晨露 发表于 2013-9-21 21:58 谢谢的说 不知道怎么回事 @people_array[j].bitmap = Bitmap.new(("Graphics/Titles/巫女" ...

这句话明显少了右括号啊。。。
现在才看到。。。

点评

恩恩,分类吧  发表于 2013-9-21 22:45
多了一个括号······  发表于 2013-9-21 22:28
恐惧剑刃 发表于 2013-9-21 20:54:33
美丽晨露 发表于 2013-9-21 20:05
思路还是可行的,但是我还是有些蒙······
这是我之前写的脚本······表示是用when判定显示的 ...
  1. #在main里
  2. #随机人物图
  3. @rand_people = rand(2) + 1#现在@rand_people的值只可能是1或2
  4. #生成
  5. @people_array = []
  6. for j in 0...2
  7. @people_array[j] = Sprite.new#必须全部Sprite.new
  8. case @rand_people
  9. when 1
  10. #这里的<<和+其实是一样的意思
  11. @people_array[j].bitmap = Bitmap.new("Graphics/Titles/莉德露"<<(j+1).to_s)
  12. when 2
  13. @people_array[j].bitmap = Bitmap.new(("Graphics/Titles/巫女"<<(j+1).to_s)
  14. end
  15. #@people_array[j].x = 0
  16. #@people_array[j].y = 0
  17. #@people_array[j].opacity = 255
  18. end
  19. #在update里
  20. if Input.trigger?(Input::C)
  21.   case @command_index  
  22.   when 0
  23.    #先释放掉之前的图片否则就效果错误了,要么改透明度重新调图
  24.    #for i in 0...2
  25.    #@people_array[i].bitmap.dispose
  26.    #@people_array[i].dispose
  27.    #end
  28.    #不管怎么分歧,之前图是要影藏的,所以这个可以放在分歧外边
  29.    for i in 0...2
  30.    @people_array[i].opacity = 0
  31.    end
  32.    @people_new.Sprite.new
  33.    case @rand_people#必须带@,否则随机数传不过来(除$)
  34.    when 1
  35.    #方法1
  36.    #读取新的图片
  37.    #@people_array[0].bitmap= Bitmap.new("Graphics/Titles/莉德露3" )
  38.    #方法2
  39.    #因为只是一张图可以改之前图的透明度,重新调图
  40.    @people_new.bitmap = Bitmap.new("Graphics/Titles/莉德露3" )
  41.    when 2
  42.    #方法1
  43.    #读取新的图片
  44.    #@people_array[0].bitmap= Bitmap.new("Graphics/Titles/巫女3" )
  45.    #方法2
  46.    #因为只是一张图可以改之前图的透明度,重新调图
  47.    @people_new.bitmap= Bitmap.new("Graphics/Titles/巫女3" )
  48.    end
  49.    #@people_new.x = 0
  50.    #@people_new.y = 0
  51.    #@people_new.opacity = 255
  52.   for t in 0...5#等待。调整5改变等待时间
  53.    Graphics.update
  54.   end
  55.   command_new_game
  56.   when 1
  57.   command_continue
  58.   when 2
  59.   when 3
  60.   command_shutdown
  61.   end
  62. end
复制代码

评分

参与人数 1星屑 +60 收起 理由
美丽晨露 + 60 认可答案

查看全部评分

美丽晨露 发表于 2013-9-21 20:05:17
恋′挂机 发表于 2013-9-21 19:44
在之前rand的时候用一个中间变量代替,
本来是
@xx.bitmap = Bitmap.new("#{rand(5) + 1}")

思路还是可行的,但是我还是有些蒙······
这是我之前写的脚本······
  1. # 随机人物
  2.     randpeople = rand(2)
  3.    #生成人物
  4.     @lidelu = Sprite.new
  5.     @lidelubmp = []
  6.     for j in 0...3
  7.       case randpeople
  8.       when 0
  9.       @lidelubmp[j] = Bitmap.new("Graphics/Titles/莉德露" + (j + 1).to_s)
  10.       when 1
  11.       @lidelubmp[j] = Bitmap.new("Graphics/Titles/巫女" + (j + 1).to_s)
  12.       end
  13.     end
复制代码
表示是用when判定显示的图片组······
是图片组不是单张图片。
然后在
  1. if Input.trigger?(Input::C)
  2.     case @command_index  
  3.       when 0
  4. case randpeople
  5.       when 0
  6.       @lidelubmp.bitmap= Bitmap.new("Graphics/Titles/莉德露3" )
  7.       when 1
  8.       @lidelubmp.bitmap = Bitmap.new("Graphics/Titles/巫女3" )
  9.       end
  10.     end
  11.        100.times{Graphics.update}
  12.         command_new_game
  13.       when 1
  14.         command_continue
  15.       when 2
  16.         
  17.       when 3
  18.         command_shutdown
  19.       end
  20.     end
复制代码
如上修改好像是行不通的啊,求一种可行的方法。
恐惧剑刃 发表于 2013-9-21 19:44:37
在之前rand的时候用一个中间变量代替,
本来是
@xx.bitmap = Bitmap.new("#{rand(5) + 1}")
现在换成
@rand_num = rand(5) + 1
@xx.bitmap = Bitmap.new("#{@rand_num}")

这样就可以通过分歧@rand_num判断原来调用的是哪张图

再根据上边的思路应该就可以了。


在Input::C里边也是可以的

评分

参与人数 1星屑 +66 收起 理由
美丽晨露 + 66 我很赞同

查看全部评分

美丽晨露 发表于 2013-9-21 19:35:05
恋′挂机 发表于 2013-9-21 19:28
第三项没看懂,不知道是不是临时改图片?也就是本来调用的是A图片,现在临时换为B图片,如果是的话,就不 ...

的确是临时读取图片的说,但是读取的图片是根据之前的。
rand随机数读取的。脚本中:rand = 1时,显示的是莉德露名称组的图片
rand = 2时,显示的是巫女名称组的图片。
所以,当rand=1 时,临时读取莉德露组的图片3,加上等待效果。
当rand=2时,临时读取巫女组的图片3,加上等待效果。

而且这些我觉得应该可以在
if Input.trigger?(Input::C)
    case @command_index  
      when 0
        command_new_game
      when 1
        command_continue
      when 2
        
      when 3
        command_shutdown
      end
    end
内完成,而我i就是没有思路······
所以,请继续求指导。
恐惧剑刃 发表于 2013-9-21 19:28:00
美丽晨露 发表于 2013-9-21 17:53
嗯,感谢你的方法·······
能不能帮助我将第三项的效果在主楼的脚本中实现呢? ...

第三项没看懂,不知道是不是临时改图片?也就是本来调用的是A图片,现在临时换为B图片,如果是的话,就不能在main(主处理)中调用图片了(要放在update里,添加限制条件不会无限调用)。

在update里:
  1. #使用方法直接@update_picture = true或者改为$号下方也对应改,全局使用
  2. if @array == nil or @update_picture == true
  3. if @array != nil#如果数组已经存在或者说图片已经存在
  4. for i in 1..5
  5. @array[i].bitmap.dispose
  6. @array[i].dispose
  7. end
  8. @array = []#然后重新读图
  9. for i in 1..5
  10. @array[i] = Sprite.new
  11. #名字可以改变,也可以分歧辅助实变量可以读取到不只一张图片
  12. @array[i].bitmap = Bitmap.new("picture#{i}")
  13. end
  14. else
  15. @array = []
  16. for i in 1..5
  17. @array[i] = Sprite.new
  18. @array[i].bitmap = Bitmap.new("#{i}")
  19. end
  20. end
复制代码
美丽晨露 发表于 2013-9-21 17:53:18
恋′挂机 发表于 2013-9-21 17:16
图的切换:
直接调用三张图,使用rand方式随机让一张图的opacity为255,其余为0

嗯,感谢你的方法·······
能不能帮助我将第三项的效果在主楼的脚本中实现呢?
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-9-21 21:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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