目前共有1篇帖子。 内容转换:不转换▼
 
点击 回复
341 0
【教程】跟我从头学脚本(三)
高级弟子 五级
1楼 发表于:2011-2-10 23:40
转载自: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

好了,今天的教学就到这了,好好回顾一下前三讲的东西,主要是理论部分较多,需要好好理解~接下来我们就主要学习如何编码了,基础要掌握好才能建好高楼哦~~ 
 

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:341 回复数:0
评论数: ?
作者:蓝晶の骑士
最后回复:蓝晶の骑士
最后回复时间:2011-2-10 23:40
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。