Lingo08 Parent/Child

Lingo中的Parent和Child,官方文档中称之为Parent Script和Child Object,实际上就是类和类的实例。

构造new后返回me

说child object是parent script的self-contained,独立完备的一个实例。

区别实例用的地址,这个地址,就是me。

因此在每个parent script的构造函数new的最后,最重要的语句就是return me。

必须在new后返回当前实例的地址。

-- parent script

property myName  

on new me, pName

myName = pName

return me

end

   

Child和Sprite、Movie

script实例和真正意义上的类的实例又有些许不同。

Director中的child object更像是对Director本身的对象Sprite,Movie等的一个扩展。

child附着在sprite和movie上,为其增加更多更灵活的功能。

而sprite和movie本身也提供了保存child object的列表:scriptInstanceListactorList

形象的说

Parent Script是cast列表中的一个cast member,

Child Object是sprite或movie上的behavior或script扩展(actor?)。

创建parent script

  • 新建一个movie,Ctrl+N;
  • 打开script window,Ctrl+0零;
  • 写脚本script;

-- parent script

property myName  

on new me, pName

myName = pName

return me

end

 

  • 在property inspector的script标签中设为parent Type。默认movie;
  • 将script命名为firstparent;(script windowt头部和cast window中都可对其命名)

用用看parent

child的new语法:

child名称 = new (script "parent名,即script名", 参数列表)

  1. 打开消息窗口,Ctrl+M;
  2. 输入

inst = new(script "firstparent","firstchild")

put inst.myName

 

  1. 会输出

-- "firstchild"

   

在Movie中用parent

  1. 在script窗口(Ctrl+0零)创建一个新的Script,默认Type为Movie,不动;
  2. 输入

on startMovie

inst = new(script "firstparent","firstchild")

put inst.myName && "created"

end

 

  1. 运行movie,Ctrl+ Alt +P;
  2. 会看到消息窗口输出,注意firstchild和created之间有个空格。&&操作符连接字符串会加空格。

-- "firstchild created"

原文地址:https://www.cnblogs.com/mumuliang/p/2230174.html