With this function you can create a custom, clickable, icon that acts as a "button" outside of the game canvas, but within the browser window itself. The function will return an id value which must be stored in a variable to be used in all further button functions that reference the new icon. This function is very useful to prevent the browser creating a pop-up window when clicking on the button as it is all done through GameMaker Studio 2 itself.
You must first set the position, which is relative to the (0,0) of the browser window (top left corner) and then give the texture page entry for the sprite you wish the button icon to have (see: sprite_get_tpe). You can then specify either a URL to open or a script (from the resource tree of GameMaker Studio 2) to be opened or run. The "target" parameter that you specify is the same as the standard JavaScript "name" value when you use the open() method (be aware that all but '_self' may result in the browser blocking, or asking the user if they wish to allow it) and the "params" argument is the same as the JavaScript "specs" parameter for controlling what properties the new window/tab should display (not all browsers may support all features). If you are using the icon to run an internal script, these last two arguments can be left as empty strings "".
Valid targets are:
Target Description _blank Opens the linked document in a new window or tab. _self Opens the linked document in the same frame as it was clicked (this is default). _parent Opens the linked document in the parent frame. _top Opens the linked document in the full body of the window.
Valid parameters are:
Parameters Description 'height=[px]' The height of the window, with the minimum value being 100. 'width=[px]' The width of the window, with the minimum value being 100. 'left=[px]' The left position of the window. 'top=[px]' The top position of the window (IE only). 'location=[boolean]' Whether or not to display the address field (default is 1). 'menubar=[boolean]' Whether or not to display the menu bar (default is 1). 'resizable=[boolean]' Whether or not the window is resizable (default is 1). 'scrollbars=[boolean]' Whether or not to display scroll bars (default is 1). 'status=[boolean]' Whether or not to add a status bar (default is 1). 'titlebar=[boolean]' Whether or not to display the title bar. This is ignored unless the calling application is an HTML Application or a trusted dialog box (default is 1); 'toolbar=[boolean]' Whether or not to display the browser toolbar (default is yes).
It is also worth noting that if the URL argument you pass in is the name of a script (ie: it doesn't start with "http://") AND the script is called gmcallback_* then you can get direct feeds into an html5 event. GameMaker Studio 2 function names are not obfuscated if they begin with gmcallback_.
clickable_add(x, y, tpe, url, target, params);
Argument | Description |
---|---|
x | The x position within the window. |
y | The y position within the window. |
tpe | The texture page entry for the sprite to be used (use sprite_get_tpe). |
url | The URL (website address) to link to, or the script to be run. |
target | This is the target area to open the URL in (see description). |
params | The various parameters for the icon (see description). |
Real
home_but = clickable_add(32, 32, sprite_get_tpe(spr_MS_Home, 0), "http://macsweeney_games.com", "_blank", "width=700, height=500, menubar=0, toolbar=0, scrollbars=0");
The above code creates a clickable DOM icon at the position (32, 32) of the page that the game canvas is running on. The icon uses the sprite referenced from the texture page as "spr_MS_Home" and when clicked the icon will open a new window for the specified URL and with the defined properties for that window.