代码拉取完成,页面将自动刷新
本组件提供一些erlang编程或系统工具集合。
热更新进程,来源于michi-web,可以对线上运行的代码进行热替换,但应该遵守以下面规则:
默认情况下spt_reloader启动,当beam代码发生变化时将会自动热更新。
游戏中需要关注很多事件的发生,比如建筑升级事件,玩家打赢了一个boss事件,spt_notify提供事件的注册和发生接口,有以下3个api:
post事件的第2个参数将会被原样传递给注册的函数,使用例子如下:
Fun1 = fun(X) -> io:format("x1 ~p~n", [X]) end,
Fun2 = fun(X) -> io:format("x2 ~p~n", [X]) end,
spt_notify:sub(e1, Fun1),
spt_notify:sub(e1, Fun2),
spt_notify:post(e1, 23),
spt_notify:ubsub(e1, Fun1),
spt_notify:post(e1, 23),
虽然erlang的动态编程能力不强(也或者是我学的很浅),但是smerl这个模块用来做动态模块扩展是比较合适的,它来源于erlyweb项目,已经稳定了很多年。
以下情况适合使用smerl动态产生模块:
使用方法如下,来源于源码注释:
test_smerl() ->
M1 = spt_smerl:new(foo),
{ok, M2} = spt_smerl:add_func(M1, "bar() -> 1 + 1."),
spt_smerl:compile(M2),
foo:bar(), % returns 2``
spt_smerl:has_func(M2, bar, 0). % returns true
该模块用来给一组进程发送广播信号,可支持动态的添加和删除进程;开放以下几个api:
使用例子如下:
spt_cast_sup:start_caster(test),
spt_cast:join(test, Pid1),% 同步
spt_cast:send(test, "test"), % 同步
spt_cast:quit(test, Pid1).% 同步
spt_cast:cast(test, "test"),% 异步
spt_cast_sup:start_caster(chat_all)
开启一个组播进程,然后让每个登陆的进程都加入它,之后便可以通过spt_cast:send(chat_all, ChatMsg)发送聊天消息。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。