Program
program的概念
GS中的program和object的关系类似于C++的class和class派生的对象, 一个gs文件可以通过new_object生成很多对象,但是始终只有一个program
program的创建
int compile_program(string file_name, mixed file_content = nil, bool force_recompile = false, bool compile_for_patch = false)
通过compile_program方法可以动态编译一个program,将文件读取导content里然后执行编译,动态编译之后可以实现对该program派生的object进行更新,例如我们的内置方法monkey.patch(program)就是通过这个原理来更新所有object
program例子简单讲解
如何获取一个对象的program
program ent_program = program.find_by_name(object_name); // 通过对象名获取program
program ent_program = object.get_program(); // 通过对象获取program
获取这个对象包含的组件
ent_program.get_components(); // 包含组件列表
获取这个对象包含的变量
ent_program.get_object_vars(); // 包含变量列表
获取这个对象包含的函数
ent_program.get_functions(); // 包含函数列表
判断一个对象是否拥有Item组件:
program ent_program = program.find_by_name("common/Node.gs");
if (!ent_program)
{
error("对应对象不存在!");
return false;
}
if (!ent_program.get_component(Item))
{
error("It has no Item component!");
return false;
}
else
return true;
program常用的外部函数
下面列出program类型一些常用的外部函数以及用法。
1. 通过对象获取program
函数原型:
program object.get_program()
使用方法:
program ent_program = object.get_program();
2. 通过对象名获取program
函数原型:
program find_by_name(string name)
使用方法:
program ent_program = program.find_by_name("common/User.gs");
3. 获取program管理的对象名称
函数原型:
string get_name()
使用方法:
string obname = program.get_name();
4. 获取该对象包含的指定组件
函数原型:
program get_component(string name)
使用方法:
program comp = program.get_component("common/Session.gs");
5. 获取该对象包含的所有组件
函数原型:
array get_components()
使用方法:
array comps = program.get_components();
6. 获取该对象包含的所有函数
函数原型:
array get_functions()
使用方法:
array funcs = program.get_functions();
7. 获取该对象包含的所有函数
函数原型:
array get_object_vars()
使用方法:
array vars = program.get_object_vars();
8. 获取该对象依赖的program列表
函数原型:
array get_depend_programs()
使用方法:
array programs = program.get_depend_programs();