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

Project1

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

[已经解决] 用脚本新建选项窗口的问题 修改问题

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
368
在线时间
94 小时
注册时间
2008-1-13
帖子
24
跳转到指定楼层
1
发表于 2009-9-17 01:37:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 jay999 于 2009-9-17 12:01 编辑

新建一个类F,定义了 类方法F.update 实例方法dispose 类方法F.main
学面向对象语言时间不长,求指教。谢谢。

谢谢楼下各位的回答,经过修改后,仍有问题
在游戏中执行脚本F.main时出错
没有找到方法.dispose for nil:nilclass

class F
  。。。。。。
。。。。。。
   def F.update
     end
    def dispose
    end
   
def F.main   
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
       F.update
      # 如果画面被切换就中断循环
      if $scene != self
        break
      end
    end
    # 装备过渡
    Graphics.freeze
    # 释放命令窗口
    @command_window.dispose
    # 释放标题图形
    @sprite.bitmap.dispose
     @sprite.dispose

end
  

end

Lv2.观梦者

永遠神剣

梦石
0
星屑
339
在线时间
412 小时
注册时间
2009-8-16
帖子
1797

贵宾

2
发表于 2009-9-17 02:36:11 | 只看该作者
def方法名字不能加"."吧
没有定义的方法调用出错 .
会不会是不是那个点的缘故.
新的UI 旧的开始
回复 支持 反对

使用道具 举报

Lv1.梦旅人

~琉璃の雪~<

梦石
0
星屑
49
在线时间
36 小时
注册时间
2008-11-6
帖子
3678
3
发表于 2009-9-17 02:48:36 | 只看该作者
first.a?
定义的时候要用下划线,这个点MS是不允许的。
~现在开始自绘头像~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
64
在线时间
4352 小时
注册时间
2007-8-31
帖子
1982
4
发表于 2009-9-17 03:06:51 | 只看该作者
直接添加一个Scene,默认脚本Scene找个复制一份修改下
然后类名要大写
这里不需要用类方法,实例方法就可以了
我真是王小二过年,一年不如一年。目前正在寻找状态中,努力找回当初的动力!
“底蕴制作者”—asperta最新博客开通!以后将在这里更新制作进度报告!
我的作品官网:http://www.asperta.org/
ASPERTA世界论坛:http://bbs.asperta.org/


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
5
发表于 2009-9-17 03:35:03 | 只看该作者
……才开始学面向对象,就不要这么快搞这种动态定义方法的东西嘛,不清楚 Ruby 的动态性质的话,很容易摸不着边,不如先仿照默认的脚本从最简单的类/实例方法写起

这其实是一个上下文环境的问题,你在 First.a(类名必须是大写字母开头的,因为要通过一个常量来引用类对象)中定义的方法会有和最外层方法相同的作用域,所以当你调用 First.a 后所定义的 update 和 dispose 方法实际上都是处在类的上下文中,相当于你在 Class ... end 之间直接定义,所以它们是属于对象的实例方法(除非你也在方法名前加上 First 或者 Self 来修饰)。然而你后面直接在类的上下文中就开始了主循环,并调用 update 方法,那自然是找不到的,因为你定义的 update 方法(虽然我没看到你在哪里调用的 First.a)并不在类上下文中。所以你应该把最后一段内容放在一个实例方法中,比如 def main ... end,这样在执行 main 的时候,其上下文就和先前定义的 update 和 dispose 一致了~
至于最后红色的那几个 dispose 跟这个不沾边,那些都是 RGSS 预定义的方法(Window、Sprite、Bitmap 等类的方法),要出错也只有可能是因为前面的接收者指向 nil(除非你刻意去反定义这些类的 dispose 方法)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-8 05:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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