Adev事务所

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

340

积分

0

好友

25

主题
发表于 6 天前 | 查看: 78| 回复: 0
1. 两次取出的引擎对象不一致
在原版 RGSS 中,一些 RGSS 对象会用其他 RGSS 对象作为属性:
  1. spr = Sprite.new
  2. spr.bitmap = Bitmap.new(16, 16)
复制代码
这里的 “spr.bitmap” 就是 Sprite 的 Bitmap 属性,
按照直觉来讲,两次 spr.bitmap 获取到的对象应该是一样的:
  1. a = spr.bitmap
  2. b = spr.bitmap
  3. a == b # => true
复制代码
但实际上URGE因为内部的架构原因两次取出的对象实际是不一样的:
  1. a = spr.bitmap
  2. b = spr.bitmap
  3. a == b # => false
复制代码
为了解决这个问题,我们给每个URGE的对象加上了方法 “engine_id”,即可真正比较两个对象是否一致:
  1. a = spr.bitmap
  2. b = spr.bitmap
  3. a.engine_id == b.engine_id # => true
复制代码
除了直接比较外,这种方式在 RMXP 中还用于作为容器的键使用:
  1. @@_reference_count[sprite.bitmap] += 1
复制代码
此时我们给bitmap加上engine_id即可解决:
  1. @@_reference_count[sprite.bitmap.engine_id] += 1
复制代码


2. 语法不兼容

考虑以下写法:
  1. <font size="2">case a</font>
  2. <font size="2">when 1: ...</font>
  3. <font size="2">when 2: ...</font>
  4. <font size="2">end</font>
复制代码
此语法在 Ruby 1.8 中有效,并于 Ruby 1.9 中废弃

考虑以下情况:
  1. nil.id
复制代码
此语法在 Ruby 1.8 中有效,在后续版本 Ruby 中废弃

考虑以下情况:
  1. nil.type # => nil
复制代码
此语法在 Ruby 1.8 中有效且为 nil,在后续版本 Ruby 中废弃

其他问题收录中……
您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|Adev事务所

GMT+8, 2025-10-29 00:24 , Processed in 0.072993 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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