Variable number of GUI Buttons
Posted
by
Wakaka
on Game Development
See other posts from Game Development
or by Wakaka
Published on 2013-10-30T16:32:26Z
Indexed on
2013/10/30
22:20 UTC
Read the original article
Hit count: 219
I have a generic HTML5 Canvas GUI Button
class and a Scene
class. The Scene
class has a method called createButton()
, which will create a new Button
with onclick parameter and store it in a list of buttons. I call createButton()
for all UI buttons when initializing the Scene
. Because buttons can appear and disappear very often during rendering, Scene
would first deactivate all buttons (temporarily remove their onclick, onmouseover etc property) before each render frame. During rendering, the renderer would then activate the required buttons for that frame.
The problem is that part of the UI requires a variable number of buttons, and their onclick, onmouseover etc properties change frequently. An example is a buffs system. The UI will list all buffs as square sprites for the current unit selected, and mousing over each square will bring up a tooltip with some information on the buff. But the number of buffs is variable thus I won't know how many buttons to create at the start. What's the best way to solve this problem? P.S. My game is in Javascript, and I know I can use HTML buttons, but would like to make my game purely Canvas-based.
- Create buttons on-the-fly during rendering. Thus I will only have buttons when I require them. After the render frame these buttons would be useless and removed.
- Create a fixed set of buttons that I'm going to assume the number of buffs per unit won't exceed. During each render frame activate the buttons accordingly and set their onmouseover property.
- Assign a button to each
Buff
instance. This sounds wrong as the buff button is a part of the GUI which can only have one unit selected. Assigning a button to every singleBuff
in the game seems to be overkill. Also, I would need to change the button's position every render frame since its order in the unit's list of buffs matter. - Any other solutions?
I'm actually quite for idea (1) but am worried about the memory/time issues of creating a new Button()
object every render frame. But this is in Javascript where object creation is oh-so-common ({}
mainly) due to automatic garbage collection. What is your take on this? Thanks!
© Game Development or respective owner