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

Project1

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

[已经解决] typeError。nil can`t be coerced into fixum 错误

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
147 小时
注册时间
2013-12-2
帖子
132
跳转到指定楼层
1
发表于 2013-12-19 10:16:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 domodomodomo 于 2013-12-19 10:22 编辑

脚本修改了地图画面的类
按A健切换到新的类再执行方向键判断
if Input.press?(Input::UP)
   xxxxx
  end
if Input.press?(Input::DOWN)
   xxxxx
  end
……………………
如果在地图中按住方向键同时按A健就会出现 typeError。nil can`t be coerced into fixum 错误。
如果方向键没按住,按A建就可以正常切换,应该是什么按键判断的冲突吧……怎么解决

Lv1.梦旅人

梦石
0
星屑
50
在线时间
147 小时
注册时间
2013-12-2
帖子
132
7
 楼主| 发表于 2013-12-20 10:08:17 | 只看该作者
美丽晨露 发表于 2013-12-19 18:10
看不出有什么错误的地方呀
楼主可否附上工程让大家检查一下呢?

不机智的在检测按键是否按住的前面
加了一段:
  1.     if Input.trigger?(Input::UP)
  2.     @no += 1
  3.   end
  4.     if Input.trigger?(Input::DOWN)
  5.     @no += 1
  6.   end
  7.     if Input.trigger?(Input::LEFT)
  8.     @no += 1
  9.   end
  10.     if Input.trigger?(Input::RIGHT)
  11.     @no += 1
  12.   end
  13. #--------------------------
  14. if@no >= 1
  15.     if Input.press?(Input::UP)
  16.     @now.y += @ya
  17.     @go.y += @ya
  18.     @map.y += @ya
  19.   end
  20.     if Input.press?(Input::DOWN)
  21.     @now.y -= @yb
  22.     @go.y -= @yb
  23.     @map.y -= @yb
  24.   end
  25.     if Input.press?(Input::LEFT)
  26.     @now.x += @xa
  27.     @go.x += @xa
  28.     @map.x += @xa
  29.   end
  30.     if Input.press?(Input::RIGHT)
  31.     @now.x -= @xb
  32.     @go.x -= @xb
  33.     @map.x -= @xb   
  34.   end
  35.   @no = 1
  36. end  
复制代码
加个判断缓冲一下就好了,虽然没确切证据,但感觉是和默认系统的脚本冲突了,在执行类之前按键已经按住可能就会出这种冲突
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

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

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

6
发表于 2013-12-19 18:10:31 | 只看该作者
看不出有什么错误的地方呀
楼主可否附上工程让大家检查一下呢?
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
5
发表于 2013-12-19 17:28:37 | 只看该作者
可能是与其它脚本冲突

点评

用一个很不机智的办法解决了  发表于 2013-12-20 10:02
用默认工程也是如此  发表于 2013-12-19 17:29
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
4
发表于 2013-12-19 11:34:59 | 只看该作者
domodomodomo 发表于 2013-12-19 11:28
地图画面的类里面加入了这段
  
f Input.trigger?(Input::A)

表示木有出错==

点评

……雅蠛蝶,和没说一样呢……但是问题的确是出现了……  发表于 2013-12-19 12:31
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
147 小时
注册时间
2013-12-2
帖子
132
3
 楼主| 发表于 2013-12-19 11:28:23 | 只看该作者
本帖最后由 domodomodomo 于 2013-12-19 11:31 编辑
英顺的马甲 发表于 2013-12-19 11:03
出错的肯定不是这两行,还是把完整的脚本发上来吧==


地图画面的类里面加入了这段
  
f Input.trigger?(Input::A)
  $scene = Scene_Maps.new
    end
然后是main前面加入的:
  1. class Scene_Maps
  2.   def main
  3.     #生成大地图
  4.     @map = Sprite.new
  5.     @map.bitmap = RPG::Cache.title("世界地图.png")
  6.     @map.x = 0
  7.     @map.y = 0
  8.     @map.z = 1
  9.     @mapa = Sprite.new
  10.     @mapa.bitmap = RPG::Cache.title("世界地图_屏幕.png")
  11.     @mapa.z = 95
  12.     @mapup = Sprite.new
  13.     @mapup.bitmap = RPG::Cache.title("世界地图_屏幕_上.png")
  14.     @mapup.z = 96
  15.     @mapup.opacity = 0
  16.     @mapdown = Sprite.new
  17.     @mapdown.bitmap = RPG::Cache.title("世界地图_屏幕_下.png")
  18.     @mapdown.z = 97
  19.     @mapdown.opacity = 0
  20.     @mapleft = Sprite.new
  21.     @mapleft.bitmap = RPG::Cache.title("世界地图_屏幕_左.png")
  22.     @mapleft.z = 98  
  23.     @mapleft.opacity = 0
  24.     @mapright = Sprite.new
  25.     @mapright.bitmap = RPG::Cache.title("世界地图_屏幕_右.png")
  26.     @mapright.z = 99
  27.     @mapright.opacity = 0
  28.    
  29. # =  生成坐标

  30.     [url=home.php?mod=space&uid=414769]@NOW[/url] = Sprite.new
  31.     @now.bitmap = RPG::Cache.title("世界地图_坐标.png")
  32.     @now.z = 2
  33.     @now.x = 0
  34.     @now.y = 0
  35.     @go = Sprite.new
  36.     @go.bitmap = RPG::Cache.title("世界地图_事件.png")
  37.     @go.z = 3
  38.     @go.x = 0
  39.     @go.y = 0
  40.     #--------------------------------------
  41.     #获取主角坐标
  42.    # 角色 X 坐标
  43.     @px = $game_player.x
  44.     @px -= 23
  45.    # 角色 Y 坐标
  46.     @py = $game_player.y
  47.     @py -= 49
  48.     #--------------------------------------
  49.   case $game_map.map_id  #根据地图ID来更换地图的位置
  50.     when 1    #ID为1的地图
  51.     @map.x = 0
  52.     @map.y = 0
  53.     when 2    #ID为2的地图
  54.     @map.x -= 30
  55.     @map.y -= 30
  56.     @px -= 30
  57.     @py -= 30
  58.     when 3    #ID为3的地图
  59.     end
  60.     #--------------------------------------
  61.     #地图坐标
  62.     @now.x = @px
  63.     @now.y = @py
  64.     #--------------------------------------        

  65.     # 执行过渡
  66.     Graphics.transition
  67.     # 主循环
  68.     loop do
  69.       # 刷新游戏画面
  70.       Graphics.update
  71.       # 刷新输入情报
  72.       Input.update
  73.       # 刷新画面
  74.       update
  75.       @now.update
  76.       @go.update
  77.       @map.update
  78.       @mapa.update
  79.     @mapup.update
  80.     @mapdown.update
  81.     @mapleft.update
  82.     @mapright.update
  83.       # 如果画面切换的话就中断循环
  84.       if $scene != self
  85.         break
  86.       end
  87.     end
  88.     # 准备过渡
  89.     Graphics.freeze
  90.     # 释放图片
  91.     @now.dispose
  92.     @go.dispose
  93.     @map.dispose
  94.     @mapa.dispose
  95.     @mapup.dispose
  96.     @mapdown.dispose
  97.     @mapleft.dispose
  98.     @mapright.dispose
  99.     # 如果在标题画面切换中的情况下
  100.     if $scene.is_a?(Scene_Title)
  101.       # 淡入淡出画面
  102.       Graphics.transition
  103.       Graphics.freeze
  104.     end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 刷新画面
  108.   #--------------------------------------------------------------------------
  109.   def update
  110.     #--------------------------
  111.     if Input.press?(Input::UP)
  112.     @now.y += @ya
  113.     @go.y += @ya
  114.     @map.y += @ya
  115.   end
  116.     if Input.press?(Input::DOWN)
  117.     @now.y -= @yb
  118.     @go.y -= @yb
  119.     @map.y -= @yb
  120.   end
  121.     if Input.press?(Input::LEFT)
  122.     @now.x += @xa
  123.     @go.x += @xa
  124.     @map.x += @xa
  125.   end
  126.     if Input.press?(Input::RIGHT)
  127.     @now.x -= @xb
  128.     @go.x -= @xb
  129.     @map.x -= @xb   
  130.   end  
  131. #-------------------------------
  132. #速度
  133.      @ya=8
  134.      @yb=8
  135.      @xa=8
  136.      @xb=8
  137. #-------------------------------
  138.     @mapup.opacity = 255
  139.     @mapdown.opacity = 255
  140.     @mapleft.opacity = 255
  141.     @mapright.opacity = 255
  142. #-------------------------------
  143.    [email protected] >=0
  144.        @mapup.opacity = 80
  145.      @ya=0
  146.    end
  147.    [email protected] <=-1568
  148.        @mapdown.opacity = 80
  149.      @yb=0
  150.    end
  151.    [email protected] >=0
  152.    
  153.     @mapleft.opacity = 80
  154.      @xa=0
  155.    end
  156.    [email protected] <=-1408
  157.        @mapright.opacity = 80
  158.      @xb=0
  159.    end
  160.   #---------------------

  161.   #---------------------
  162.     #--------------------------
  163.   #按下B键时返回地图
  164.    if Input.trigger?(Input::B)
  165.      $scene = Scene_Map.new
  166.    end
  167.   end
  168. end
复制代码
很多都只是一般用的显示图片的脚本,感觉触发错误的就是 if Input.press?(Input::)
顺便问问怎么折叠脚本……,脚本不多,可是很长……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
2
发表于 2013-12-19 11:03:10 | 只看该作者
出错的肯定不是这两行,还是把完整的脚本发上来吧==
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 06:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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