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

Project1

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

[已经解决] 请教个菜单画面显示地图背景的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
跳转到指定楼层
1
发表于 2012-10-31 20:34:37 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 亿万星辰 于 2012-10-31 20:46 编辑
  1. class Scene_Compose
  2. #--------------------------------------------------------------------------
  3. # ● 初始化
  4. #--------------------------------------------------------------------------
  5. def initialize
  6.    # 生成帮助窗口
  7.    @help_window = Window_Help.new
  8.    #显示图片菜单
  9.    @dajao_1 = Sprite.new
  10.    @dajao_1.bitmap = Bitmap.new("Graphics/Windowskins/dajao")
  11.    @dajao_1.x = 150
  12.    @dajao_1.y = 50
  13.    # 生成命令窗口
  14.    @command_window = Window_ComposeCommand.new
  15.    @command_window.active = false
  16.    # 生成左方窗口
  17.    @item_window = Window_ComposeLeft.new
  18.    @item_window.active = true
  19.    @item_window.windowskin = Bitmap.new("Graphics/Windowskins/006-Blue")
  20.    @item_window.help_window = @help_window
  21.    # 生成右方窗口
  22.    @forge_window = Window_ComposeRight.new([])
  23.    @forge_window.active = false
  24.    @forge_window.help_window = @help_window
  25.    # 初始化配方与合成区
  26.    @formulas = $game_system.formulas
  27.    @products = $game_system.products
  28.    @forge = []
  29.    @products_temp = []      
  30. end
  31.   #--------------------------------------------------------------------------
  32.   # ● 主处理
  33.   #--------------------------------------------------------------------------
  34. def main
  35.   # 执行过渡
  36.    Graphics.transition
  37.    # 主循环
  38.    loop do
  39.      # 刷新游戏画面
  40.      Graphics.update
  41.      # 刷新输入情报
  42.      Input.update
  43.      # 刷新画面
  44.      update
  45.      # 如果画面被切换的话就中断循环
  46.      if $scene != self
  47.        break
  48.      end
  49.    end
  50.    # 准备过渡
  51.    Graphics.freeze
  52.    # 释放窗口
  53.    @help_window.dispose
  54.    @dajao_1.dispose
  55.    @dajao_1.bitmap.dispose
  56.    @command_window.dispose
  57.    @item_window.dispose
  58.    @forge_window.dispose
  59. end
  60.   #--------------------------------------------------------------------------
  61.   # ● 刷新画面
  62.   #--------------------------------------------------------------------------  
  63. def update
  64.    @help_window.update
  65.    @dajao_1.update
  66.    @command_window.update
  67.    @item_window.update
  68.    @forge_window.update
  69.    if @command_window.active
  70.      update_command
  71.      return
  72.    end
  73.    if @item_window.active
  74.      update_item
  75.      return
  76.    end
  77.    if @forge_window.active
  78.      update_forge
  79.      return
  80.    end
  81.     return
  82. end
  83.   #--------------------------------------------------------------------------
  84.   # ● 刷新画面(指令窗口激活的情况下)
  85.   #--------------------------------------------------------------------------
  86.   def update_command
  87.     # 按下 B 键的情况下
  88.     if Input.trigger?(Input::B)
  89.       # 演奏取消 SE
  90.       $game_system.se_play($data_system.cancel_se)
  91.       abort
  92.       # 切换到地图画面
  93.       $scene = Scene_Map.new
  94.       return
  95.     end
  96.      # 按下 C 键的情况下
  97.     if Input.trigger?(Input::C)
  98.       # 命令窗口光标位置分支
  99.       case @command_window.index
  100.       when 0  # 更改材料
  101.         # 演奏确定 SE
  102.         $game_system.se_play($data_system.decision_se)
  103.         # 窗口状态转向物品窗口
  104.         @command_window.active = false
  105.         @item_window.active = true
  106.         @forge_window.active = false
  107.       when 1  # 合成
  108.         # 演奏确定 SE
  109.         $game_system.se_play($data_system.decision_se)
  110.         # 执行合成命令
  111.         if $game_temp.forge != []
  112.           compose
  113.         end
  114.       when 2  # 放弃合成
  115.         # 演奏确定 SE
  116.         $game_system.se_play($data_system.decision_se)
  117.         # 放弃合成
  118.         abort
  119.       when 3  # 离开
  120.         # 演奏确定 SE
  121.         $game_system.se_play($data_system.decision_se)
  122.         # 放弃合成
  123.         abort
  124.         # 切换到地图画面
  125.         $scene = Scene_Map.new
  126.       end
  127.       return
  128.     end
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 刷新画面(物品窗口激活的情况下)
  132.   #--------------------------------------------------------------------------
  133.   def update_item
  134.      # 按下 B 键的情况下
  135.     if Input.trigger?(Input::B)
  136.       # 演奏取消 SE
  137.       $game_system.se_play($data_system.cancel_se)
  138.       # 切换到指令窗口
  139.       @item_window.active = false
  140.       @command_window.active = true
  141.       @help_window.set_text("")
  142.       return
  143.     end
  144.      # 按下 C 键的情况
  145.     if Input.trigger?(Input::C)
  146.       # 演奏确定 SE
  147.       $game_system.se_play($data_system.decision_se)
  148.       # 获取物品
  149.       @item = @item_window.item
  150.       # 获取物品的所持数
  151.       case @item
  152.       when RPG::Item
  153.         number = $game_party.item_number(@item.id)
  154.         typetemp = 0
  155.       when RPG::Weapon
  156.         number = $game_party.weapon_number(@item.id)
  157.         typetemp = 1
  158.       when RPG::Armor
  159.         number = $game_party.armor_number(@item.id)
  160.         typetemp = 2
  161.       end
  162.       if number != nil
  163.         # 更改合成窗口的物品
  164.         case @item
  165.         when RPG::Item
  166.           $game_party.lose_item(@item.id, 1)
  167.         when RPG::Weapon
  168.           $game_party.lose_weapon(@item.id, 1)
  169.         when RPG::Armor
  170.           $game_party.lose_armor(@item.id, 1)
  171.         end
  172.         forge_change(typetemp, @item.id, 1)
  173.         # 刷新各窗口
  174.         @item_window.update
  175.         @help_window.update
  176.         @forge_window.update
  177.         @item_window.refresh
  178.         @forge_window.refresh
  179.       end
  180.     end
  181.      # 按下 右方向键 的情况
  182.     #if Input.trigger?(Input::RIGHT)
  183.       # 切换到合成窗口
  184.      # @item_window.active = false
  185.       #@forge_window.active = true
  186.     #end
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ● 刷新画面(合成窗口激活的情况下)
  190.   #--------------------------------------------------------------------------
  191.   def update_forge
  192.      # 按下 B 键的情况下
  193.     if Input.trigger?(Input::B)
  194.       # 演奏取消 SE
  195.       $game_system.se_play($data_system.cancel_se)
  196.       # 切换到指令窗口
  197.       @forge_window.active = false
  198.       @command_window.active = true
  199.       @help_window.set_text("")
  200.       return
  201.     end
  202.      # 按下 C 键的情况
  203.     if Input.trigger?(Input::C)
  204.      # 演奏确定 SE
  205.      $game_system.se_play($data_system.decision_se)
  206.      # 获取物品
  207.       @item = @forge_window.item
  208.       # 获取物品的所持数
  209.       case @item
  210.       when RPG::Item
  211.         number = @forge_window.item_number
  212.         typetemp = 0
  213.       when RPG::Weapon
  214.         number = @forge_window.item_number
  215.         typetemp = 1
  216.       when RPG::Armor
  217.         number = @forge_window.item_number
  218.         typetemp = 2
  219.       end
  220.      if number != nil
  221.        # 更改合成窗口的物品
  222.        case @item
  223.        when RPG::Item
  224.          $game_party.gain_item(@item.id, 1)
  225.        when RPG::Weapon
  226.          $game_party.gain_weapon(@item.id, 1)
  227.        when RPG::Armor
  228.          $game_party.gain_armor(@item.id, 1)
  229.        end
  230.        #p number
  231.        forge_change(typetemp, @item.id, -1)
  232.        # 刷新各窗口
  233.        @item_window.refresh
  234.        @forge_window.refresh
  235.        @help_window.update
  236.        @item_window.update
  237.        @forge_window.update
  238.       end
  239.     end
  240.        # 按下 左方向键 的情况下
  241.     #if Input.trigger?(Input::LEFT)
  242.       # 切换到合成窗口
  243.       #@forge_window.active = false
  244.       #@item_window.active = true
  245.     #end
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 更改合成窗口物品
  249.   #--------------------------------------------------------------------------
  250.   def forge_change(type,id,number)  
  251.      quantity = number  
  252.      for item in $game_temp.forge
  253.        if (item[0]==type) and (item[1]==id)  
  254.          item[2] = [item[2] += quantity,99].min  
  255.          if item[2] == 0  
  256.            $game_temp.forge.delete(item)  
  257.          end
  258.          return  
  259.        end  
  260.      end  
  261.      $game_temp.forge.push([type,id,number])  
  262.   end  
  263.   #--------------------------------------------------------------------------
  264.   # ● 放弃合成
  265.   #--------------------------------------------------------------------------  
  266.   def abort
  267.     # 将合成窗口中的物品转移至物品窗口中
  268.     for item in $game_temp.forge
  269.       # 判断物品类型并归还
  270.       case item[0]
  271.       when 0
  272.         $game_party.gain_item(item[1], item[2])
  273.       when 1
  274.         $game_party.gain_weapon(item[1], item[2])
  275.       when 2
  276.         $game_party.gain_armor(item[1], item[2])
  277.       end
  278.     end
  279.     $game_temp.forge = []
  280.     # 刷新各窗口
  281.     @item_window.refresh
  282.     @forge_window.refresh
  283.   end
  284.   #--------------------------------------------------------------------------
  285.   # ● 检测是否有符合的配方
  286.   #--------------------------------------------------------------------------
  287. def match
  288.    match_one = false
  289.    match_this = false
  290.     # 检测每一个配方
  291.    for i in [email][email protected][/email]
  292.      # 将合成窗口中的物品复制到合成缓存区
  293.      # 注意: 直接使用"="将传引用 导致检测配方是否匹配时合成窗口中物品被删除
  294.      @forge = $game_temp.forge.dup
  295.      # 检测这个配方中每一项材料
  296.      for ingredient in @formulas[i]
  297.        match_this = true
  298.        # 合成区中没有此项材料的情况
  299.        unless @forge.include?(ingredient)
  300.          match_this = false
  301.          break
  302.        end
  303.        # 从合成区中暂时删除这项材料
  304.        @forge.delete(ingredient)
  305.      end
  306.      if match_this == false
  307.        next
  308.      end
  309.      # 检测合成区中是否还有配方外的材料剩余
  310.      unless @forge == []
  311.        match_this = false
  312.      end
  313.      # 满足这一个配方的情况
  314.      if match_this == true
  315.        match_one = true
  316.        # 获取配方的成品
  317.        @products_temp = @products[i]
  318.        break
  319.      end
  320.    end
  321.    return match_one
  322. end
  323.   #--------------------------------------------------------------------------
  324.   # ● 合成
  325.   #--------------------------------------------------------------------------
  326. def compose
  327.    # 如果有符合的配方
  328.    if match
  329.      # 将合成窗口中的材料改变为成品
  330.      $game_temp.forge = []
  331.      for i in [email]0...@products_temp.size[/email]
  332.       forge_change(@products_temp[i][0], @products_temp[i][1], @products_temp[i][2])
  333.     end
  334.      if $SE_Compose_Successful != ""
  335.        Audio.se_play($SE_Compose_Successful)
  336.      end
  337.    # 合成失败的情况
  338.    else  
  339.      if $SE_Compose_Failed != ""
  340.        Audio.se_play($SE_Compose_Failed)
  341.      end
  342.      if $Ingredient_Lost_When_Fail
  343.        $game_temp.forge = []
  344.      end
  345.    end
  346.     # 刷新各窗口
  347.    @item_window.refresh
  348.    @forge_window.refresh
  349. end
  350. end
复制代码
如上脚本,如何在菜单窗口后面显示出地图画面为背呀。试了N次就是不行。

能看见NPC。其它地方全黑的{:2_270:} 求教高手

点评

代码加上[code]框  发表于 2012-10-31 20:45

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
5
 楼主| 发表于 2012-10-31 20:57:11 | 只看该作者
# ● 主处理
  #--------------------------------------------------------------------------
  def main
    #设置地图画面为菜单背景
    at = Spriteset_Map.new  #生成地图画面


用了上面方法,也不行
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
251 小时
注册时间
2009-11-13
帖子
453
4
发表于 2012-10-31 20:56:21 | 只看该作者
楼上说的对啊,不过在主站里搜一个,透明度的脚本,要方便的多啊。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
3
 楼主| 发表于 2012-10-31 20:55:13 | 只看该作者
不是,地图是用双远景图
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

2
发表于 2012-10-31 20:47:30 | 只看该作者
本帖最后由 亿万星辰 于 2012-10-31 20:49 编辑
  1.   #--------------------------------------------------------------------------
  2.   # ● 主处理
  3.   #--------------------------------------------------------------------------
  4. def main
  5.   map = Spriteset_Map.new
  6.   ……
  7.   map.dispose
  8. end
复制代码
你先确定你的地图是不是用默认的图块绘制的。

评分

参与人数 1星屑 +60 收起 理由
hcm + 60 感谢回答

查看全部评分

我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-19 12:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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