common_event
简介
通用的静态事件库
组件接口
FCommonEvent.gs
通用静态事件组件
函数原型 | 函数作用 |
---|---|
void listen_self(string event, function fn) | 侦听raiser的事件 |
void listen(string event, function fn) | 侦听raiser的事件 |
void listen_other(string ob_name, string event, function fn) | 侦听指定对象的事件(和listen是一样的) |
void raise(string event, ...) | 触发一个事件 |
mixed raise_answer(string event, ...) | 触发一个抢答式的事件 |
样例
// ctest0.gs
// sample code
component pkg.common_event.FCommonEvent;
import .ptest0;
void create()
{
listen("aaa", (: on_test :));
listen("bbb", (: on_test :));
listen_other(ptest0, "ccc", (: on_test :));
}
parallel void on_test(object raiser, string event, ...)
{
printf("%s: event=%s,raiser=%O\n", __FILE__,event, raiser);
}
// ctest1.gs
// sample code
component .ctest0;
import .ptest0;
void create()
{
listen("aaa", (: on_test :));
listen("bbb", (: on_test :));
listen_other(ptest0, "ccc", (: on_test :));
}
parallel void on_test(object raiser, string event, ...)
{
printf("%s: event=%s,raiser=%O\n", __FILE__,event, raiser);
}
// ctest2.gs
// sample code
component .ctest1;
import .ptest0;
map _v = {};
import gs.lang.*;
import gs.util.*;
void create()
{
listen_self("aaa", (: on_aaa, {}, 2, 3 :));
listen("bbb", (: on_test :));
listen_other(ptest0, "ccc", (: on_test :));
}
parallel void on_test(object raiser, string event, ...)
{
printf("%s: event=%s,raiser=%O\n", __FILE__,event, raiser);
}
void on_aaa(mixed a, int b, int c, string event, ...)
{
_v[time.time_ms()] = true;
printf("hahahaha:%O: %M\n", this.get_domain(), $<);
}
// ptest0.gs
// sample code
component pkg.common_event.FCommonEvent;
// sample0.gs
// sample code
#pragma parallel
import gs.lang.*;
import gs.util.*;
import .ctest2;
import .ptest0;
import pkg.common_event.common_event;
object load(string ob_file)
{
object ob = find_object(ob_file);
if (ob)
return ob;
return load_static(ob_file, domain.create());
}
public void test()
{
printf("--------------------------------\n");
object ob = load(ctest2);
ob.raise("aaa");
ob.raise("bbb");
printf("--------------------------------\n");
object ob2 = new_object(ctest2, domain.create());
ob2.raise("aaa");
ob2.raise("bbb");
printf("--------------------------------\n");
object ob3 = load(ptest0);
ob3.raise("ccc");
printf("--------------------------------\n");
object ob4 = new_object(ptest0, domain.create());
ob4.raise("ccc");
printf("--------------------------------\n");
common_event.dump();
}