转载自:www.66rpg.com
原作者:Dubealex
Near Fantastica(特别讲)
主讲人(翻译):frantice 电子书制作:小湖
第三讲 基本词汇和语法(下)
大家应该没忘记上回的内容吧^0^,好,不废话了,今天继续! 我们来看看他的脚本是怎么写的,因为说明较长,所以给脚本标上了行数:
1 class Say_Something 我们这里创建了一个新的对象叫"message1"它将做为Say_Something的一个instance来使用.也就是说我们对这个对象的任何操作都是在这个Say_Something类里来定义的".我们已经在这个类的initialize方法里添加了Argument 接收器(不明白的见第一讲的图示), 我们需要发送这些argument .那么怎么发送到这个类里呢?和我们处理它的方法一样,在这个类名里列出他们就行了 2 attr_accessor :greeting 我们在这里定义了一个ATTR 值,全称是 Attribute. 我们可以简单地用ATTR_ACCESSOR 来定义一个新的可读可写,适用于由Say_Something创建的任何对象的instance的功能.我们第一个ATTR 的名字叫greeting. 3 attr_accessor :name 定义另一个ATTR, 名字叫name 4 def initialize(greeting, name) 我们定义了一个新的方法initialize.看过前面教学,你大家应该明白这个initialize 的方法是在一个对象由class类创建时,第一个执行的方法.所以我们添加Argument 接受器,那么这个方法可以被接收到了. 在这个例子中, 这些"argument" (ATTR)是"greeting" 和 "name". 我们在冒号的两边放上这些argument接收器和方法的名字. 注意这些"Argument 接受器是 " "接收者"; 也就是说逗号两边的都是变量名,它们在后来还是有用途的. 5 @greeting=greeting 这里我们新定义了一个"Instance 变量" , 他们把"greeting"这个数据传送出去..一个 instance 变量都由 @ 开头,在同类的每个方法中都非常有用.它们都在方法中定义 通过这样我们就能命令RMXP接收"greeting" 并把它放在"@greeting" 里以便其他方法中调用 6 @name=name 同上,不过这回的attribute是”name” 7 end 结束方法initialize 8 def say 定义一个新的叫”say”的方法 9 print @greeting + " " + @name 我们这样编码,当”say”这个信息被对象接收了会怎么样.这里是显示"@greeting"的内容, 一个空号后加入"@name".的内容. 10 end 结束say的方法定义 11 end 结束 Say_Something 这个类
好了,脚本是看完了,再完整地看一遍: class Say_Something attr_accessor :greeting attr_accessor :name def initialize(greeting, name) @greeting=greeting @name=name end def say print @greeting + “ “ + @name end end 是不是不那么扑朔迷离了??
那么接下来看事件页脚本,我们也一行一行地看^0^. 1 message1=Say_Something.new("Hello", "Alex") 我们创建了一个新的目标对象叫"message1" ,它是类"Say_Something"的一个instance (也就是说我们对这个对象的任何操作都是在这个Say_Something类里来定义的).我们在这个类的initialize 方法里已经添加了 "Argument 接受器" , 我们就要发送这些 argument. 2 message2=Say_Something.new("Hello", "Peter") 同1 3 print message1.name 我们用Ruby 的命令"print" 来显示对象"message1"中储存的name名字.大家可以看到, 只用这个类的ATTR中定义过的name 名字就能获得对象的attributes (内容) 4 print message2.name 同3 5 message1.say 我们现在发送了信息给对象"message1",这个信息就是"say". 然后,你告诉"message1" 执行"say”的功能; 再然后,"message1"在它的类"Say_Something"寻找定义过的命令.就这样,目标对象就返回到了class类中定义过的动作,也就是在屏幕中显示. 6 message2.say 同5
完整地看下事件页这几行脚本: message1=Say_Something.new("Hello", "Alex") message2=Say_Something.new("Hello", "Peter") print message1.name print message2.name message1.say message2.say
好了,今天的教学就到这了,好好回顾一下前三讲的东西,主要是理论部分较多,需要好好理解~接下来我们就主要学习如何编码了,基础要掌握好才能建好高楼哦~~
|