We can extends the Cocos Creator's main menu by putting main-menu
field in package.json
, and then add your menu path and options as key-value pair in it. Here is an example:
{
"main-menu": {
"Examples/FooBar/Foo": {
"message": "my-package:foo"
},
"Examples/FooBar/Bar": {
"message": "my-package:bar"
}
}
}
The snapshot above shows us how to add menu items "Foo" and "Bar" in the path "Example" > "Foobar". When we click the menu item, it will sending the IPC message to our main process which defined in message
field.
For instance, when we click "Foo" it will send the message my-package:foo
.
The keys of main-menu
is the menu path we want to add to main menu. The menu path uses posix path formation, which use /
as the separator. When Cocos Creator load package's main-menu
, it start searching menu item by the menu path we provide. When the target menu item is not found, Cocos Creator will help us create a sub-menu automatically, otherwise it will use the exists menu and insert the menu in it.
We might meet warnings and errors during main menu reigstry:
This can be happen when several packages uses the same path. The first loaded package will take the path, and the other ones will raise an error when it registers.
This is similar to the last case, except the conflict come from the parent path or parent's parent:
{
"main-menu": {
"Examples/FooBar": {
"message": "my-package:foo"
},
"Examples/FooBar/Bar": {
"message": "my-package:bar"
}
}
}
Let's see the example, we first register a menu path "Example/Foobar", after that we try to register "Examples/Foobar/Bar". The second menu path indeed require the "Foobar" to be a sub-menu, but the first time registry already use "Foobar" as a menu-item, and this makes the second menu path register failed.
The menu path support i18n format. We can write the path as i18n:examples/i18n:foobar
, Cocos Creator will help us search the i18n ID and replace the path item.
We already use message
option in our example. There are many other options we can use, like: icon, accelerator, type,... More options, check main-menu Reference.