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

Project1

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

[已经解决] 图片标题修改求思路求方法......

[复制链接]

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

跳转到指定楼层
1
发表于 2013-9-20 23:29:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 美丽晨露 于 2013-9-21 15:14 编辑

以下是范例:
多图片标题.zip (987.04 KB, 下载次数: 99)

我想讲图片标题做出以下效果······
1.标题背景等待一段帧数后会切换到另一张,以渐变的效果切换······
2.人物素材显示在右方,两个人物随机出现一个。
且会在标题中眨眼(切换图片效果)······
3.点击第一、第二、第三选项时,等待,人物素材变为“名称3”
执行下面的事情。


已经自行修改了一番,但是第三项依旧无法实现······
求脚本大师帮助。

RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  3. #==============================================================================
  4.  
  5. #==============================================================================
  6. # ■ 图片标题菜单1.0
  7. # Scene_Title
  8. #------------------------------------------------------------------------------
  9. # 作者:chaochao
  10. # [url]http://zhuchao.go1.icpcn.com[/url]
  11. #==============================================================================
  12. class Scene_Title
  13.   def main
  14.     if $BTEST
  15.       battle_test
  16.       return
  17.     end
  18.     $data_actors = load_data("Data/Actors.rxdata")
  19.     $data_classes = load_data("Data/Classes.rxdata")
  20.     $data_skills = load_data("Data/Skills.rxdata")
  21.     $data_items = load_data("Data/Items.rxdata")
  22.     $data_weapons = load_data("Data/Weapons.rxdata")
  23.     $data_armors = load_data("Data/Armors.rxdata")
  24.     $data_enemies = load_data("Data/Enemies.rxdata")
  25.     $data_troops = load_data("Data/Troops.rxdata")
  26.     $data_states = load_data("Data/States.rxdata")
  27.     $data_animations = load_data("Data/Animations.rxdata")
  28.     $data_tilesets = load_data("Data/Tilesets.rxdata")
  29.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  30.     $data_system = load_data("Data/System.rxdata")
  31.     $game_system = Game_System.new
  32.     # 生成标题图形
  33.     [url=home.php?mod=space&uid=114926]@sprite[/url] = [Sprite.new]
  34.     for i in 0..8
  35.       @sprite[i] = Sprite.new
  36.       @sprite[i].opacity = 0
  37.     end
  38.     # 生成标题图形
  39.     @titleback = Sprite.new
  40.     @titleback.bitmap = Bitmap.new(640, 480)
  41.     #生成标题变换图形
  42.     @titlesp = Sprite.new
  43.     @titlespbmp = []
  44.     for j in 0...3
  45.       @titlespbmp[j] = Bitmap.new("Graphics/Titles/标题" + (j + 1).to_s)
  46.     end
  47.     #
  48.     @titlesp.opacity = 127
  49.     @titlesp.bitmap = @titlespbmp[0]
  50.     @bmpsequence = 0
  51.     @bmpopacity = 255
  52.     @bmpdirect = 1
  53.     @titleback.bitmap.fill_rect(0, 0, 640, 480, Color.new(255, 255, 255, 255))
  54.     #
  55.     # 随机人物
  56.     randpeople = rand(2)
  57.    #生成人物
  58.     @lidelu = Sprite.new
  59.     @lidelubmp = []
  60.     for j in 0...3
  61.       case randpeople
  62.       when 0
  63.       @lidelubmp[j] = Bitmap.new("Graphics/Titles/莉德露" + (j + 1).to_s)
  64.       when 1
  65.       @lidelubmp[j] = Bitmap.new("Graphics/Titles/巫女" + (j + 1).to_s)
  66.       end
  67.     end
  68.     @lidelu.bitmap = @lidelubmp[0]
  69.     @lidelu.x = 300
  70.     @lidelu.y = 120
  71.     @lidelu.z = 9999
  72.     @lidelublinkcount = 0
  73.     ###
  74.     @sprite[0].bitmap = RPG::Cache.title($data_system.title_name)
  75.     @sprite[0].opacity = 0
  76.     @sprite[0].z =9999
  77.     #开始游戏的图片
  78.     @sprite[1].bitmap = Bitmap.new("Graphics/Titles/开始1.png")
  79.     @sprite[2].bitmap = Bitmap.new("Graphics/Titles/开始2.png")
  80.     @sprite[1].z =9999
  81.     @sprite[2].z =9999
  82.     #继续游戏的图片
  83.     @sprite[3].bitmap = Bitmap.new("Graphics/Titles/继续1.png")
  84.     @sprite[4].bitmap = Bitmap.new("Graphics/Titles/继续2.png")
  85.     @sprite[3].z =9999
  86.     @sprite[4].z =9999
  87.     #结束游戏的图片
  88.     @sprite[5].bitmap = Bitmap.new("Graphics/Titles/人物1.png")
  89.     @sprite[6].bitmap = Bitmap.new("Graphics/Titles/人物2.png")
  90.     @sprite[5].z =9999
  91.     @sprite[6].z =9999
  92.     #第四项的图片
  93.     @sprite[7].bitmap = Bitmap.new("Graphics/Titles/退出1.png")
  94.     @sprite[8].bitmap = Bitmap.new("Graphics/Titles/退出2.png")
  95.     @sprite[7].z =9999
  96.     @sprite[8].z =9999
  97.     #图片位置
  98.     for i in 1..8
  99.       x=135
  100.       y=(i+1)/2*35+240
  101.       @sprite[i].x =x
  102.       @sprite[i].y =y
  103.     end
  104.     @continue_enabled = false
  105.     for i in 0..3
  106.       if FileTest.exist?("Save#{i+1}.rxdata")
  107.         @continue_enabled = true
  108.       end
  109.     end
  110.     if @continue_enabled
  111.       @command_index = 1
  112.     else
  113.       @command_index = 0
  114.       @sprite[3].tone = Tone.new(0, 0, 0, 255)
  115.       @sprite[4].tone = Tone.new(0, 0, 0, 255)
  116.     end
  117.     $game_system.bgm_play($data_system.title_bgm)
  118.     Audio.me_stop
  119.     Audio.bgs_stop
  120.     Graphics.transition
  121.     loop do
  122.       Graphics.update
  123.       #淡出背景圖形
  124.       if @sprite[0].opacity <= 255
  125.         @sprite[0].opacity += 15
  126.       end
  127.       Input.update
  128.       update
  129.       if $scene != self
  130.         break
  131.       end
  132.     end
  133.     Graphics.freeze
  134.     # 釋放圖形
  135.     @titleback.bitmap.dispose
  136.     @titleback.dispose
  137.     for j in 0...3
  138.       @titlespbmp[j].dispose
  139.     end
  140.     @lidelu.dispose
  141.     for j in 0...3
  142.       @lidelubmp[j].dispose
  143.     end
  144.     @titlesp.dispose
  145.     for i in 0..8
  146.       @sprite[i].bitmap.dispose
  147.       @sprite[i].dispose
  148.     end
  149.   end
  150.   def update
  151.   chaochaocommandchaochao
  152.   if Input.trigger?(Input::C)
  153.     case @command_index  
  154.       when 0
  155.         command_new_game
  156.       when 1
  157.         command_continue
  158.       when 2
  159.  
  160.       when 3
  161.         command_shutdown
  162.       end
  163.     end
  164.    # 更新背景图片
  165.     if @bmpdirect > 0
  166.       @bmpopacity += 10
  167.       if @bmpopacity >= 1200
  168.         @bmpdirect = -1
  169.       end
  170.     else
  171.       @bmpopacity -= 10
  172.       if @bmpopacity <= 0
  173.         @bmpdirect = 1
  174.         # 更换人物和背景图片
  175.         @bmpsequence = (@bmpsequence + 1) % 3
  176.         @titlesp.bitmap = @titlespbmp[@bmpsequence]
  177.       end
  178.     end
  179.     #更换图片操作
  180.     @titlesp.opacity = (@bmpopacity > 255 ? 127 : @bmpopacity / 2)
  181.     @lidelublinkcount = (@lidelublinkcount + 1) % 60
  182.     @lidelu.bitmap = @lidelubmp[@lidelublinkcount >= 52 ? 1 : 0]
  183.   end
  184.   #
  185.   def chaochaocommandchaochao
  186.     if Input.trigger?(Input::UP)
  187.       @command_index -= 1
  188.       if @command_index < 0
  189.         @command_index = 3
  190.       end
  191.       $game_system.se_play($data_system.cursor_se)
  192.     end
  193.     if Input.trigger?(Input::DOWN)
  194.       @command_index += 1
  195.       if @command_index > 3
  196.         @command_index = 0
  197.       end
  198.       $game_system.se_play($data_system.cursor_se)
  199.     end
  200.     case @command_index
  201.    when 0
  202.       if @sprite[1].opacity >= 0
  203.         @sprite[1].opacity -= 30
  204.       end
  205.       if @sprite[2].opacity <= 240
  206.         @sprite[2].opacity += 30
  207.       end
  208.       if @sprite[3].opacity <= 210
  209.         @sprite[3].opacity += 30
  210.       end
  211.       if @sprite[4].opacity >= 0
  212.         @sprite[4].opacity -= 30
  213.       end
  214.       if @sprite[5].opacity <= 210
  215.         @sprite[5].opacity += 30
  216.       end
  217.       if @sprite[6].opacity >= 0
  218.         @sprite[6].opacity -= 30
  219.       end
  220.       if @sprite[7].opacity <= 210
  221.         @sprite[7].opacity += 30
  222.       end
  223.       if @sprite[8].opacity >= 0
  224.         @sprite[8].opacity -= 30
  225.       end
  226.     when 1
  227.       if @sprite[1].opacity <= 210
  228.         @sprite[1].opacity += 30
  229.       end
  230.       if @sprite[2].opacity >= 0
  231.         @sprite[2].opacity -= 30
  232.       end
  233.       if @sprite[3].opacity >= 0
  234.         @sprite[3].opacity -= 30
  235.       end
  236.       if @sprite[4].opacity <= 240
  237.         @sprite[4].opacity += 30
  238.       end
  239.       if @sprite[5].opacity <= 210
  240.         @sprite[5].opacity += 30
  241.       end
  242.       if @sprite[6].opacity >= 0
  243.         @sprite[6].opacity -= 30
  244.       end
  245.       if @sprite[7].opacity <= 210
  246.         @sprite[7].opacity += 30
  247.       end
  248.       if @sprite[8].opacity >= 0
  249.         @sprite[8].opacity -= 30
  250.       end
  251.     when 2
  252.       if @sprite[1].opacity <= 210
  253.         @sprite[1].opacity += 30
  254.       end
  255.       if @sprite[2].opacity >= 0
  256.         @sprite[2].opacity -= 30
  257.       end
  258.       if @sprite[3].opacity <= 210
  259.         @sprite[3].opacity += 30
  260.       end
  261.       if @sprite[4].opacity >= 0
  262.         @sprite[4].opacity -= 30
  263.       end
  264.       if @sprite[5].opacity >= 0
  265.         @sprite[5].opacity -= 30
  266.       end
  267.       if @sprite[6].opacity <= 240
  268.         @sprite[6].opacity += 30
  269.       end
  270.       if @sprite[7].opacity <= 210
  271.         @sprite[7].opacity += 30
  272.       end
  273.       if @sprite[8].opacity >= 0
  274.         @sprite[8].opacity -= 30
  275.       end
  276.       when 3
  277.       if @sprite[1].opacity <= 210
  278.         @sprite[1].opacity += 30
  279.       end
  280.       if @sprite[2].opacity >= 0
  281.         @sprite[2].opacity -= 30
  282.       end
  283.       if @sprite[3].opacity <= 210
  284.         @sprite[3].opacity += 30
  285.       end
  286.       if @sprite[4].opacity >= 0
  287.         @sprite[4].opacity -= 30
  288.       end
  289.       if @sprite[7].opacity >= 0
  290.         @sprite[7].opacity -= 30
  291.       end
  292.       if @sprite[8].opacity <= 240
  293.         @sprite[8].opacity += 30
  294.       end
  295.       if @sprite[5].opacity <= 210
  296.         @sprite[5].opacity += 30
  297.       end
  298.       if @sprite[6].opacity >= 0
  299.         @sprite[6].opacity -= 30
  300.       end
  301.     end
  302.   end
  303. end
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
2
发表于 2013-9-21 10:44:05 | 只看该作者

这个可以用事件标题制作

本帖最后由 紫英晓狼1130 于 2013-9-21 10:46 编辑

我现在不在电脑前…
晨露的这个范例用到脚本吗?
一定要使用脚本吗?

点评

是的。  发表于 2013-9-21 10:45
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

3
发表于 2013-9-21 13:57:37 | 只看该作者
本帖最后由 kuerlulu 于 2013-9-21 13:59 编辑

来看看这个换图脚本= =|||大雾,无视文件名
  1.     @i = 0
  2.     @sprite = Sprite.new
  3.     @sprite.bitmap = RPG::Cache.title("虐杀原形循环/" + @i.to_s)
  4.     loop do
  5.       @sprite.bitmap = RPG::Cache.title("虐杀原形循环/" + @i.to_s)
  6.       Graphics.update
  7.       # 每300帧清缓存,每1807帧循环到第一帧。
  8.       if @i % 300 == 0
  9.         RPG::Cache.clear
  10.       end
  11.       if @i % 1807 == 0
  12.         @i = 0
  13.       end
  14. #中断循环的代码没写进去所以它会一直在放hahaha...XD
  15.     end
  16. #方法2是把loop do换成for in。。XD我连dispose都没写
复制代码
但是这个脚本的播放速度是1帧1图,要按时间切图需要把判定重新改一下"if BALABALABALA"
加上过渡效果就(参见RGSS内部模块)
  1. @sprite.bitmap = RPG::Cache.title("虐杀原形循环/" + @i.to_s)
  2. loop do
  3.   Graphics.freeze
  4.   if Balabalabala..
  5.     @sprite.bitmap = RPG::Cache.title("虐杀原形循环/" + @i.to_s)
  6.   end
  7.   Graphics.transition([duration[, filename[, vague]]])
  8.   Graphics.update
  9.   BALABALABALA...
  10. end
复制代码

点评

看到里面各种XD我就觉得你的节操降低了  发表于 2013-9-21 18:21

评分

参与人数 1星屑 +30 收起 理由
美丽晨露 + 30 感谢提供思路

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

4
 楼主| 发表于 2013-9-21 15:15:49 | 只看该作者
主楼更新了内容,请各位高人帮帮忙
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
5
发表于 2013-9-21 17:16:23 | 只看该作者
本帖最后由 恋′挂机 于 2013-9-21 17:17 编辑

图的切换:
直接调用三张图,使用rand方式随机让一张图的opacity为255,其余为0

上方加一句 @Time = 0
在刷新中
@Time += 1
if @time > 99
#让当前显示的图慢慢消失(减透明度)
#同时加另一张图的透明度,实现渐变效果
for i in 0...21
@picture1.opacity -= 10
@picture2.opacity += 10
if i == 20
@picture1.opacity = 0
@picture1.opacity = 255
end
end
end


补充随机显示图片
@pictrues_array = []
for i in 0...5
@pictrues_array = sprite.new
@pictrues_array.bitmap = Bitmap.new("picture#{i + 1}")
@pictrues_array.x = 0#X坐标
@pictrues_array.y = 0#Y坐标
@pictrues_array.opacity = 0#不用管,为随机出现图片做准备
end
#图片名就是  picture1  picture2 picture3 等等
@pictrues_array[rand(5) + 1].opacity = 255#这就是随机一个数并带入数组让数组中的某张图透明度为255


随机显示人物也是那样


等待

for i in 0...100#相当于帧数,即等待时间长短
Graphics.update
end  

评分

参与人数 1星屑 +30 收起 理由
美丽晨露 + 30 感谢方法提醒

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

6
 楼主| 发表于 2013-9-21 17:53:18 | 只看该作者
恋′挂机 发表于 2013-9-21 17:16
图的切换:
直接调用三张图,使用rand方式随机让一张图的opacity为255,其余为0

嗯,感谢你的方法·······
能不能帮助我将第三项的效果在主楼的脚本中实现呢?
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
7
发表于 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
复制代码

点评

嗯最后少了一个end,反正思路就这样  发表于 2013-9-21 19:30
好像最后少了一个end  发表于 2013-9-21 19:28
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

8
 楼主| 发表于 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就是没有思路······
所以,请继续求指导。
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
9
发表于 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 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

10
 楼主| 发表于 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
复制代码
如上修改好像是行不通的啊,求一种可行的方法。

点评

稍等10分钟左右解决一下内务  发表于 2013-9-21 20:07
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-22 05:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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