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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: huhumaru
打印 上一主题 下一主题

[已经解决] 按照论坛的帖子制作Scene_menu的背景,但是始终不成功

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
11
发表于 2013-3-30 09:59:20 | 只看该作者
本帖最后由 j433463 于 2013-3-30 10:41 编辑

我想您误会了,背景图不是取代,而是画上去的,可以指定 z 值让一个盖在另一个上面,不会影响到菜单本身,我个的例子截图:



您可以看到,菜单的背景 1-032-72.png 存在,而另一个弓箭手的半身像盖在背景上面,却不影响到菜单上的队伍状态内容,

这整个 Scene_Menu 的修改后内容是:

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_Menu
  4. #------------------------------------------------------------------------------
  5. #  选单画面
  6. #==============================================================================
  7.  
  8. class Scene_Menu < Scene_MenuBase
  9.   #--------------------------------------------------------------------------
  10.   # ● 开始处理
  11.   #--------------------------------------------------------------------------
  12.   def start
  13.     super
  14.     create_background
  15.     create_background2
  16.     create_command_window
  17.     create_gold_window
  18.     create_status_window
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 生成背景
  22.   #--------------------------------------------------------------------------
  23.   def create_background
  24.     @background_sprite = Sprite.new
  25.     @background_sprite.bitmap = Cache.load_bitmap("Graphics/Pictures/","1-032-72")
  26.     @background_sprite.color.set(0, 0, 0, 0)
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 生成背景
  30.   #--------------------------------------------------------------------------
  31.   def create_background2
  32.     @background_sprite2 = Sprite.new
  33.     @background_sprite2.bitmap = Cache.load_bitmap("Graphics/Pictures/","player_06")
  34.     @background_sprite2.color.set(0, 0, 0, 0)
  35.     @background_sprite2.z += 1
  36.     @background_sprite2.x = Graphics.width - @background_sprite2.width
  37.     @background_sprite2.y = Graphics.height - @background_sprite2.height
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 结束背景
  41.   #--------------------------------------------------------------------------
  42.   def dispose_background
  43.     @background_sprite2.dispose
  44.     @background_sprite.dispose
  45.   end  
  46.  
  47.   #--------------------------------------------------------------------------
  48.   # ● 生成指令视窗
  49.   #--------------------------------------------------------------------------
  50.   def create_command_window
  51.     @command_window = Window_MenuCommand.new
  52.     @command_window.set_handler(:item,      method(:command_item))
  53.     @command_window.set_handler(:skill,     method(:command_personal))
  54.     @command_window.set_handler(:equip,     method(:command_personal))
  55.     @command_window.set_handler(:status,    method(:command_personal))
  56.     @command_window.set_handler(:formation, method(:command_formation))
  57.     @command_window.set_handler(:save,      method(:command_save))
  58.     @command_window.set_handler(:game_end,  method(:command_game_end))
  59.     @command_window.set_handler(:cancel,    method(:return_scene))
  60.     @command_window.y = 100
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 生成金钱视窗
  64.   #--------------------------------------------------------------------------
  65.   def create_gold_window
  66.     @gold_window = Window_Gold.new
  67.     @gold_window.x = 0
  68.     @gold_window.y = Graphics.height - @gold_window.height
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 生成状态视窗
  72.   #--------------------------------------------------------------------------
  73.   def create_status_window
  74.     @status_window = Window_MenuStatus.new(@command_window.width, 0)
  75.     @status_window.y = 62
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 指令“物品”
  79.   #--------------------------------------------------------------------------
  80.   def command_item
  81.     SceneManager.call(Scene_Item)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 指令“技能”“装备”“状态”
  85.   #--------------------------------------------------------------------------
  86.   def command_personal
  87.     @status_window.select_last
  88.     @status_window.activate
  89.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  90.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 指令“整队”
  94.   #--------------------------------------------------------------------------
  95.   def command_formation
  96.     @status_window.select_last
  97.     @status_window.activate
  98.     @status_window.set_handler(:ok,     method(:on_formation_ok))
  99.     @status_window.set_handler(:cancel, method(:on_formation_cancel))
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 指令“存档”
  103.   #--------------------------------------------------------------------------
  104.   def command_save
  105.     SceneManager.call(Scene_Save)
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 指令“结束游戏”
  109.   #--------------------------------------------------------------------------
  110.   def command_game_end
  111.     SceneManager.call(Scene_End)
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 个人指令“确定”
  115.   #--------------------------------------------------------------------------
  116.   def on_personal_ok
  117.     case @command_window.current_symbol
  118.     when :skill
  119.       SceneManager.call(Scene_Skill)
  120.     when :equip
  121.       SceneManager.call(Scene_Equip)
  122.     when :status
  123.       SceneManager.call(Scene_Status)
  124.     end
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 个人指令“取消”
  128.   #--------------------------------------------------------------------------
  129.   def on_personal_cancel
  130.     @status_window.unselect
  131.     @command_window.activate
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 整队“确定”
  135.   #--------------------------------------------------------------------------
  136.   def on_formation_ok
  137.     if @status_window.pending_index >= 0
  138.       $game_party.swap_order(@status_window.index,
  139.                              @status_window.pending_index)
  140.       @status_window.pending_index = -1
  141.       @status_window.redraw_item(@status_window.index)
  142.     else
  143.       @status_window.pending_index = @status_window.index
  144.     end
  145.     @status_window.activate
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 整队“取消”
  149.   #--------------------------------------------------------------------------
  150.   def on_formation_cancel
  151.     if @status_window.pending_index >= 0
  152.       @status_window.pending_index = -1
  153.       @status_window.activate
  154.     else
  155.       @status_window.unselect
  156.       @command_window.activate
  157.     end
  158.   end
  159. end


也就是说,您可以建无数个图片在背景上,只要设好每一张图片的 z 值,而且要保证每一张图的背景是透明的,可以看到底下的图。

代码中只是加了 create_background2 多做一次背景生成,并且设定一下位置和 z 值而已,
如果没记错,窗口默认的 z 值好像是 100 吧?所以背景的 z 值有不少空间可以发挥。

之所以您原来的地图背景会被取代,只是因为我用的背景名 @background_sprite 相同而已,如果您用了教程的方法建立了地图背景,
把它当第一个背景,只需要把我的那个背景生成名称改一下,就像我这例子中第二张背景图,用 @background_sprite2 就可以和地图背景共存,
并没有取代的问题。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
57 小时
注册时间
2012-9-1
帖子
34
12
 楼主| 发表于 2013-3-30 11:54:08 | 只看该作者
本帖最后由 huhumaru 于 2013-3-30 11:55 编辑
j433463 发表于 2013-3-30 09:59
我想您误会了,背景图不是取代,而是画上去的,可以指定 z 值让一个盖在另一个上面,不会影响到菜单本身, ...


原来是我用了同样的变量名啊,我测试了下,的确如您所说。真是太感谢了!
两种窗口效果如图,一个是不透明一个是半透明。我想我下一步应该是修改光标样子了。再次感谢您,我把这个帖子修改为已解决吧。


回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6795
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

13
发表于 2013-3-30 17:57:44 | 只看该作者
huhumaru 发表于 2013-3-30 09:34
谢谢您的回复,从您的代码里我知道这种创建背景的方法了。
不过要按照我之前设想的效果的话,您的这种方 ...

因为他用的变量名和函数名是默认脚本用的 所以默认的那层被替换掉了  











你知道得太多了

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-20 11:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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