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

Project1

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

[已经解决] 请问如何制作道具选择出现图片?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2010-10-23
帖子
30
跳转到指定楼层
发表于 2013-4-6 14:55:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 andyss129 于 2013-4-7 11:13 编辑




请问我目前道具在左边显示,我想做的效果是,当我选择到了道具之后,右边就会显示我自己的图片,请问应该怎么去实现?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
来自 15楼
发表于 2013-4-7 10:58:06 | 只看该作者
本帖最后由 j433463 于 2013-4-7 11:17 编辑

或者,如果您觉得 Sprite.new 的方式比较好做,也可以这样做:

打开 Window_ItemList 脚本:
  1.   #--------------------------------------------------------------------------
  2.   # ● 更新说明内容
  3.   #--------------------------------------------------------------------------
  4.   def update_help
  5.     draw_itempic(item) #加这一行,描绘物品图
  6.     @help_window.set_item(item)
  7.   end
复制代码
然后在 Widnow_Base 中找个位置放这一段:
  1.   #--------------------------------------------------------------------------
  2.   # ● 描绘物品
  3.   #--------------------------------------------------------------------------
  4.   def draw_itempic(item)
  5.     return if item == nil
  6.     @itempic_sprite.dispose if @itempic_sprite != nil #这一行判断若 @itempic_sprite 已建立则 dispose 它
  7.     @itempic_sprite = Sprite.new
  8.     @itempic_sprite.bitmap = Cache.load_bitmap("Graphics/Items/", "item_#{item.id.to_s}") #依照 item.id 去读取 Graphics/Items/ 目录下的图,如 item_3.png
  9.     @itempic_sprite.x = 280
  10.     @itempic_sprite.y = 160
  11.   end
复制代码
这样子,我 ID 为 1 号的物品图就是 item_1.png,5 号就是 item_5.png,根本不会混淆,

如果您想用物品名称当作图档名,这也是可以的,把 item.id 改成 item.name,再把 item_#{item.id.to_s} 改成 item.name 而已。
  1.   #--------------------------------------------------------------------------
  2.   # ● 描绘物品
  3.   #--------------------------------------------------------------------------
  4.   def draw_itempic(item)
  5.     return if item == nil
  6.     @itempic_sprite.dispose if @itempic_sprite != nil #这一行判断若 @itempic_sprite 已建立则 dispose 它
  7.     @itempic_sprite = Sprite.new
  8.     @itempic_sprite.bitmap = Cache.load_bitmap("Graphics/Items/", item.name) #依照 item.name 去读取 Graphics/Items/ 目录下的图
  9.     @itempic_sprite.x = 280
  10.     @itempic_sprite.y = 160
  11.   end
复制代码
整个过程很简单的,不必要再 if 判断那么多,变得好复杂。





所以,您的方式只是:

RUBY 代码复制
  1. def update_help
  2.     @help_window.set_item(item)
  3.     return if item == nil
  4.     @itempic_sprite.dispose if @itempic_sprite != nil #这一行判断若 @itempic_sprite 已建立则 dispose 它
  5.     @start_1 = Sprite.new
  6.     @start_1.bitmap = Bitmap.new("Graphics/Pictures/" + item.name)
  7.     @start_1.x = 305
  8.     @start_1.y = 140
  9. end


这样子,或者,您觉得您的档名不是按照 item 的 id 或 name 来的,那也大可以用一个阵列先把档名排好,再取用:

RUBY 代码复制
  1. @itempic_name = [
  2.   "wider",
  3.   "helpwater",
  4.   "standet"
  5. ]
  6. def update_help
  7.     @help_window.set_item(item)
  8.     return if item == nil
  9.     @itempic_sprite.dispose if @itempic_sprite != nil #这一行判断若 @itempic_sprite 已建立则 dispose 它
  10.     @start_1 = Sprite.new
  11.     @start_1.bitmap = Bitmap.new("Graphics/Pictures/" + @itempic_name[item.id])
  12.     @start_1.x = 305
  13.     @start_1.y = 140
  14. end


@itempic_name 预先设好,和 item.id 一致,那就直接以 item.id 取 @itempic_name[item.id] 的值,不就很容易解决了?

评分

参与人数 1梦石 +2 收起 理由
Mic_洛洛 + 2 精品文章

查看全部评分

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
671
在线时间
372 小时
注册时间
2008-1-13
帖子
149
14
发表于 2013-4-7 22:43:40 | 只看该作者
物品使用设置公共事件
条件分歧
是否查看物品

插入图片(直接指定xy坐标)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
671
在线时间
372 小时
注册时间
2008-1-13
帖子
149
13
发表于 2013-4-7 18:33:05 | 只看该作者
用事件就能实现把
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2010-10-23
帖子
30
12
 楼主| 发表于 2013-4-7 10:20:34 | 只看该作者
j433463 发表于 2013-4-7 09:07
contents.clear 或 @窗口名.clear

前者是删掉目前的作用区域,后者是清掉整个窗口,我不知道您绘图是用哪 ...

RUBY 代码复制
  1. def update_help
  2.     @help_window.set_item(item)   
  3.     @start_1 = Sprite.new
  4.  
  5.     if((item ? item.id : "") == 16)
  6.       @start_1.bitmap = Bitmap.new("Graphics/Pictures/hammer")
  7.       @start_1.x = 305
  8.       @start_1.y = 140
  9.       @start_1.bitmap.dispose
  10.     end
  11.  
  12.     if((item ? item.id : "") == 15)
  13.       @start_1.bitmap = Bitmap.new("Graphics/Pictures/object_oldkey")
  14.       @start_1.x = 305
  15.       @start_1.y = 140  
  16.     end
  17.  
  18.     if((item ? item.id : "") == 14)
  19.  
  20.       @start_1.bitmap = Bitmap.new("Graphics/Pictures/apple")
  21.       @start_1.x = 305
  22.       @start_1.y = 140
  23.     end
  24.   end



我是用这个方法去做,但是不管怎么加好像都会当掉,不然就是图片显示都没有显示,还是我这做法有问题?



目前情况是这样...

点评

参考我楼下的方式吧。  发表于 2013-4-7 11:00
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
11
发表于 2013-4-7 09:07:21 | 只看该作者
contents.clear 或 @窗口名.clear

前者是删掉目前的作用区域,后者是清掉整个窗口,我不知道您绘图是用哪一种方式,

我是用绘背景立绘的方式:
  1. bitmap = Cache.load_bitmap("路径", 档名)
  2. rect = Rect.new(x, y, width, height)
  3. contents.blt(contents_width, contents_height, bitmap, rect, alpha)
  4. bitmap.dispose
复制代码
所以一般在画完图后 bitmap 直接 dispose 掉了,而刷新时只要有 contents.clear 图片就会一并被清掉,

没有您说的那些状况。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
198 小时
注册时间
2011-7-28
帖子
120
10
发表于 2013-4-7 04:33:02 | 只看该作者
http://rpg.blue/thread-233544-1-1.html   楼主不知道这个是不是~不过脚本我完全不懂~
还有个超级整合里有个物品栏~那个也可以显示自定的图片~就是那个物品栏改的太复杂了~要是不懂脚本可能会很麻烦~(反正我就不懂~嗳~)
http://rpg.blue/thread-238847-1-1.html 第~28个脚本~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2010-10-23
帖子
30
9
 楼主| 发表于 2013-4-7 02:47:48 | 只看该作者
j433463 发表于 2013-4-7 01:59
放在这儿说吧,既然已经有 item.id 取得物品 ID,不论它怎么换位置排列,物品本身 ID 是固定的,一号物品对 ...

所以我是要针对哪一个去做clear? 画面? 还是bitmap? 还是sprite? 这地方我不太懂因为我好像clear都会出现错误跳出....
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
8
发表于 2013-4-7 01:59:22 | 只看该作者
放在这儿说吧,既然已经有 item.id 取得物品 ID,不论它怎么换位置排列,物品本身 ID 是固定的,一号物品对应一号图片,它排在第九位置依然是一号物品,依然对应一号图片,您却是要多加一层区别,按照 ID 去找档名。

(item ? item.id : 0 ) 这是三元运算式,问号左边 item 是条件,如果 item 的值是存在的,那就返回 item.id,否则就返回 0,之所以要这样,是因为一开始进入物品菜单时的瞬间,item 是 nil,因为还没有选任何物品,所以如果直接 item 会出错,因为指定物品并不存在,无法取得 item 的 id。

而您 item == 16 也是错的,item 是物件,它包含不只 ID,还有说明和名称等等,直接用 item 去和 16 比较是否相等,这要电脑拿什么去比?您应该是用 item.id 才对,但有 nil 的可能,所以要用前面的三元运算方式来避免出错。

bitmap 的问题,其实在画完时就可以 bitmap.dispose 了,如果您不 dispose,下一次画的 bitmap 又是另外的,但这和图重叠没有关系,造成重叠的原因是在刷新时没有 clear 清除画面,前面画的图没有清除,后面的图自然重叠上去了。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2010-10-23
帖子
30
7
 楼主| 发表于 2013-4-6 22:08:12 | 只看该作者
R15 发表于 2013-4-6 20:58
是指在物品栏的时候显示物品的图标么
在设置物品的时候可以选择图像的



就是像这样选择上道具后,右边可以出现自定义的道具图片这样

目前不太知道如何抓取判断跟弄一个框架让他里面显示图片的方法...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
6
发表于 2013-4-6 21:33:23 | 只看该作者
在 Window_ItemList 中,最底下的更新说明内容 def update_help:
  1.   #--------------------------------------------------------------------------
  2.   # ● 更新说明内容
  3.   #--------------------------------------------------------------------------
  4.   def update_help
  5.     @help_window.set_item(item)
  6.   end
复制代码
在 () 中的 item 就是光标所在的物品,您可以在这儿加一行调用绘制物品图片。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 18:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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