meta data for this page
📚 NativeMenu
NativeMenu
是一个轻量的基础UI系统,可供开发者快速实现基础菜单GUI。
NativeMenu
是特殊的UI形式,支持以World端直接为某个玩家建立一个UI并绑定事件(而不需要客户端写多余的代码),同时也支持Client端正常独立使用。
注意:NativeMenu
属于世界场景实例,加载新场景时将会自动销毁。
📒 使用方式
World端与Client端的具体使用方式有些许差异(指API方法部分),除此之外的数据绑定等内容都是通用的。
let view = { Cover: 0, Tag: "Test", Title: "XXX", Info: "ABC", Width: 500, Align: 1, Layout: 1, Hotkey: true, Items: [ { Text: "点击:输出玩家Name", OnClick: () => { DLog("PlayerName: " + player.Name); } },{ Input: "xxx", Restrict: "*", OnFocus: (text) => { DLog("输入框文本: " + text); } } ] }; //World player.CreateNativeMenu(view); //Client CreateNativeMenu(view); //Destroy同理 player.DestroyNativeMenu(); DestroyNativeMenu();
📒 传递数据解析
使用NativeMenu
的方法十分简单,只需要按规范自定义一个JavaScript的对象结构,就可以实现一个轻量级菜单的UI效果。
let view = { Cover: 0, //顶部图片,可空,否则填写一个Store/Sprite图片ID Tag: "Test", //识别标签,可空,无实际作用,主要用于检测\分辨 Title: "XXX", //顶部标题文本 Info: "ABC", //顶部子标题文本 Width: 500, //宽度,可空(默认360) Align: 1, //对齐方向(0左;1中;2右) Layout: 1, //窗口布局方向,相对于屏幕(0左;1中;2右) Hotkey: true, //是否启用快捷键 Items: [ //在此数组填写【Item项目数据】 { Tag: "Test1", //可空,主要用于SetNativeMenuText等情况查询使用 Text: "文本标题", //由于是Text,所以表示标签文本 Info: "介绍XXX", //可空,如填写则表示【鼠标悬停焦点】时,将此段内容更换至【菜单子标题】,失去焦点时恢复默认窗口子标题 OnClick: () => { //当被点击事件 DLog("PlayerName: " + player.Name); } },{ Input: "输入内容", //由于是Input,所以表示可输入内容的文本 Restrict: "*", //可空,如为"*"表示密码输入,否则将以正则表达式限制输入 OnFocus: (text) => { //当被修改后失去焦点事件(回车) DLog("输入框文本: " + text); } } ] }; CreateNativeMenu(view);