Project1

标题: openrgss 无法启动 [打印本页]

作者: taroxd    时间: 2014-12-27 09:35
标题: openrgss 无法启动
openrgss 是 https://rpg.blue/thread-248776-1-1.html 这个东西

我安装以后,用如下代码测试
RUBY 代码复制
  1. require 'openrgss'
  2.  
  3. loop { Graphics.update }


结果如下:
  1. .../gems/openrgss-0.1.5/lib/openrgss/graphics.rb:30:in `update': undefined method `fill_rect' for nil:NilClass (NoMethodError)
复制代码
大概是 Graphics 的 entity 属性没有初始化的原因。

请问是我启动的方式不对吗?是否是需要调用一些初始化的方法?

[line]2[/line]
附:

Ruby/SDL 的安装应该没有问题,所有与 SDL 有关的库都已安装。

环境:Fedora 21 x86_64

顺便问一下,用 Ruby/SDL 制作的东西怎么打包?
作者: zeldafd    时间: 2014-12-27 10:56
本帖最后由 zeldafd 于 2014-12-27 11:16 编辑

說真...為什麼我沒看到@ENTITY有初始化過...

----------------------------UPDATE-----------------------------------------
    def init
      SDL.init SDL::INIT_EVERYTHING
      Graphics.entity = SDL::Screen.open(Graphics.width, Graphics.height, 0, SDL::HWSURFACE|SDL::HWPALETTE)
      SDL::Mixer.open(SDL::Mixer::DEFAULT_FREQUENCY, SDL::Mixer::DEFAULT_FORMAT, SDL::Mixer::DEFAULT_CHANNELS, 1536)
      SDL::TTF.init
      self.title = @title
    end
在上面更新的話...
應該是SDL初始化錯誤, 等我再找找問題, 抱歉
----------------------------UPDATE-----------------------------------------
應該是因為你安裝的庫是64BIT,而OPENRGSS是WIN32應用, 所以應該要安裝WIN32版本的SDL庫
如果有SDL的錯誤日誌, 錯誤原因應該會是 No available video device.

希望幫到你吧
作者: taroxd    时间: 2014-12-27 12:42
zeldafd 发表于 2014-12-27 10:56
說真...為什麼我沒看到@ENTITY有初始化過...

----------------------------UPDATE----------------------- ...


openrgss 不是纯 Ruby 实现的吗?和 64 位库有什么关系呢?

我按照 RGSS 模块的方法尝试了一下:

RUBY 代码复制
  1. require 'openrgss'
  2.  
  3. include RGSS
  4.  
  5. RGSS.title = 'test'
  6.  
  7. rgss_main { loop { Graphics.update } }


结果
  1. undefined method `drawRect' for #<SDL::Screen:0x0000000295ea50> (NoMethodError)
复制代码
我怀疑,是不是我的 rubysdl 版本太新的原因?
毕竟 openrgss 是两年前的东西了。
作者: zeldafd    时间: 2014-12-27 13:10
taroxd 发表于 2014-12-27 12:42
openrgss 不是纯 Ruby 实现的吗?和 64 位库有什么关系呢?

我按照 RGSS 模块的方法尝试了一下:

他的源碼引用了已安裝的SDL庫,實際上是使用本機的庫,可能是位元不同導致符號庫讀取不同,但我沒碰到這個問題。
所以所有推測也是從源碼和網上資料結合分析。
而你一開始那句RGSS.title實際已調用SDL方法,但那時SDL尚未初始化,因此亦會出錯。
在調用任何SDL類或方法必須於RGSS_main之後,因為在那時SDL才初始化。
參考網站:http://stackoverflow.com/questio ... ilable-video-device
作者: taroxd    时间: 2014-12-27 13:16
本帖最后由 taroxd 于 2014-12-27 13:18 编辑
zeldafd 发表于 2014-12-27 13:10
他的源碼引用了已安裝的SDL庫,實際上是使用本機的庫,可能是位元不同導致符號庫讀取不同,但我沒碰到這 ...


如果不设置 title 的话,即:
RUBY 代码复制
  1. require 'openrgss'
  2.  
  3. include RGSS
  4.  
  5. # RGSS.title = 'test'
  6.  
  7. rgss_main { loop { Graphics.update } }


结果就是
  1. gems/openrgss-0.1.5/lib/openrgss/rgss.rb:30:in `setCaption': no implicit conversion of nil into String (TypeError)
复制代码
你没有碰到这个问题,那请问你启动的代码是什么呢?
这里不是想要用 openrgss 启动一个 RM 工程,而只是想要利用 openrgss 来执行这句代码 loop { Graphics.update } 而已。

另外,我确定我的 Ruby/SDL 可以正常工作。应该是 openrgss 使用方法上的问题。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1