当前位置: 首页 > news >正文

石家庄新钥匙网站品牌形象网站源码

石家庄新钥匙网站,品牌形象网站源码,做商城网站要哪些流程,计算机前端工资多少在脚本中,子系统通过以下全局财产可用:时间、文件系统、日志、缓存、网络、输入、ui、音频、引擎、图形、渲染器、脚本、控制台、debugHud、数据库。请注意,由于WorkQueue和Profiler的低级性质,它们不可用于脚本。 事件本身不需要…

在脚本中,子系统通过以下全局财产可用:时间、文件系统、日志、缓存、网络、输入、ui、音频、引擎、图形、渲染器、脚本、控制台、debugHud、数据库。请注意,由于WorkQueue和Profiler的低级性质,它们不可用于脚本。

事件本身不需要注册。它们通过名称的32位 hashes来识别。事件参数(数据负载)是可选的,包含在VariantMap中,由32位参数名称散列标识。对于内置的Urho3D事件,事件类型(E_UPDATE、E_KEYDOWN、E_MOUSEMOVE等)和参数散列(P_TIMESTEP、P_DX、P_DY等)使用帮助宏Urho3D_event和Urho3D_PARAM定义为包含文件(如CoreEvents.h或InputEvents.h)中的命名空间常量。

订阅事件时,必须指定处理程序函数。在C++中,这些必须具有签名void HandleEvent(StringHash eventType、VariantMap和eventData)。URHO3D_HANDLER(className,function)宏有助于定义所需的特定于类的函数指针。例如:

SubscribeToEvent(E_UPDATE, URHO3D_HANDLER(MyClass, MyEventHandler));

脚本中的事件由其字符串名称而不是名称哈希来标识(尽管这些名称在内部转换为哈希)。脚本事件处理程序可以具有与C++中相同的签名,或者在不需要事件类型和参数时使用简化的签名void HandleEvent()。相同的事件订阅如下所示:

SubscribeToEvent("Update", "MyEventHandler");

在C++中,事件必须始终由成员函数处理。脚本内程序事件处理也是可能的;在这种情况下,事件处理程序函数所在的ScriptFile成为事件接收器。有关详细信息,请参阅脚本。

也可以取消订阅活动。有关详细信息,请参阅UnsubscribeFromEvent()。

要发送事件,请填写事件参数(如果需要)并调用SendEvent()。例如,这(在C++中)是引擎子系统在每个帧上发送Update事件的方式。出于性能原因,在C++中,通过调用GetEventDataMap()而不是每次创建一个新的VariantMap对象,在每个帧中重用相同的映射对象。请注意,参数名称哈希位于与事件名称匹配的命名空间中:

using namespace Update;VariantMap& eventData = GetEventDataMap();
eventData[P_TIMESTEP] = timeStep_;
SendEvent(E_UPDATE, eventData);

在脚本中,事件参数(如事件类型)用字符串引用,因此相同的代码如下所示:

VariantMap eventData;
eventData["TimeStep"] = timeStep;
SendEvent("Update", eventData);

通过其他对象发送事件

由于SendEvent()函数是公共的,因此事件可以被“伪装”为源自任何对象,即使实际上不是由该对象的成员函数代码发送的。这可用于简化通信,尤其是场景中组件之间的通信。例如,物理模拟通过使用参与场景节点作为发送者来发出碰撞事件的信号。这意味着任何组件都可以很容易地订阅其自身节点的冲突,而不必知道所涉及的实际物理组件。同样的原则也可以用于任何特定于游戏的消息传递,例如,使“收到的损害”事件源自场景节点,尽管它本身没有损害或健康的概念。

C++11事件绑定和发送

事件可以绑定到lambda函数,包括捕获上下文:

SubscribeToEvent(E_UPDATE, [&](StringHash type, VariantMap& args) {});

std::bind() 类方法:

void MyObject::OnUpdate(StringHash type, VariantMap& args)
{}
SubscribeToEvent(E_UPDATE, std::bind(&MyObject::OnUpdate, this, std::placeholders::_1, std::placeholders::_2)));

std::bind() 丢弃不需要的参数:

void Class::OnUpdate(VariantMap& args)
{}using namespace std::placeholders;SubscribeToEvent(E_UPDATE, std::bind(&Class::OnUpdate, this, _2)));

有一种使用C++可变模板发送事件的方便方法,它减少了所需的样板代码量。使用上面的相同示例,在C++11标准中,代码可以重写为:

using namespace Update;
SendEvent(E_UPDATE, P_TIMESTEP, timeStep_);

在上面的示例中只有一个参数对,但是,此重载方法接受任意数量的参数对。

http://www.yayakq.cn/news/880846/

相关文章:

  • 乌审旗建设局网站网站上怎样做轮播图
  • 佛山网站建设公司有哪中国采购与招标网官网首页
  • 网站推广怎么做大一python基础编程题
  • 网站建设应该学什么软件做奢侈品的网站
  • 阿里云搭建多个网站泰安房产信息网泰安市房产交易中心
  • 一条龙做网站郑州比较好的电商公司有哪些
  • 揭阳网站开发网站开发速成班
  • 网站建设预算知乎在网上怎么赚钱
  • 做寻亲网站的理由wordpress输出所有页面
  • 献县制作网站盐城市住房和城乡建设局门户网站
  • 在网页做动态图片的网站建设网站建设公司
  • 抚松做网站星月教你做网站回顾文档
  • 网站定制开发是什么欧模网室内设计网官网
  • 北京网站制作计划深圳企业馆设计公司
  • 马蹄室内设计网论坛seo实战密码第三版pdf下载
  • 搜索附近人软件快速优化系统
  • 网站后台管理系统怎么用广州广告公司前100名排行
  • 中国新农村建设网站投稿海淀网站开发公司
  • 可以随意建国际商城的网站吗优化推广网站推荐
  • 赣州市铁路建设办公室网站中国新农村建设促进会网站
  • 中国建设银行亚洲网站华为软件开发工程师待遇
  • 衡水做网站电话关于销售网站有哪些内容
  • 深圳市住房建设部官方网站seo快速优化软件网站
  • 做网站建设公司哪家好中原建设信息网 网站
  • o2o电子商务网站wordpress点击网页效果
  • 工业风 网站建设湖北皇奥建设工程有限公司网站
  • 网站商城建设要多少钱成都网页制作服务好
  • 做游戏网站要通过什么审核wordpress加载条插件
  • 自适应网站模板wordpress代码插件
  • 百度 网站 说明河南省建设工程质量协会网站