Method: MiniGL::Button#initialize
- Defined in:
- lib/minigl/forms.rb
#initialize(x, y = nil, font = nil, text = nil, img = nil, text_color = 0, disabled_text_color = 0, over_text_color = 0, down_text_color = 0, center_x = true, center_y = true, margin_x = 0, margin_y = 0, width = nil, height = nil, params = nil, retro = nil, scale_x = 1, scale_y = 1, anchor = nil, &action) ⇒ Button
Creates a button.
Parameters:
- x
-
The x-coordinate where the button will be drawn in the screen.
- y
-
The y-coordinate where the button will be drawn in the screen.
- font
-
The
Gosu::Font
object that will be used to draw the button text. - text
-
The button text. Can be
nil
or empty. - img
-
A spritesheet containing four images in a column, representing, from top to bottom, the default state, the hover state (when the mouse is over the button), the pressed state (when the mouse button is down and the cursor is over the button) and the disabled state. If
nil
, thewidth
andheight
parameters must be provided. - text_color
-
Color of the button text, in hexadecimal RRGGBB format.
- disabled_text_color
-
Color of the button text, when it’s disabled, in hexadecimal RRGGBB format.
- over_text_color
-
Color of the button text, when the cursor is over it (hexadecimal RRGGBB).
- down_text_color
-
Color of the button text, when it is pressed (hexadecimal RRGGBB).
- center_x
-
Whether the button text should be horizontally centered in its area (the area is defined by the image size, if an image is given, or by the
width
andheight
parameters, otherwise). - center_y
-
Whether the button text should be vertically centered in its area (the area is defined by the image size, if an image is given, or by the
width
andheight
parameters, otherwise). - margin_x
-
The x offset, from the button x-coordinate, to draw the text. This parameter is used only if
center
is false. - margin_y
-
The y offset, from the button y-coordinate, to draw the text. This parameter is used only if
center
is false. - width
-
Width of the button clickable area. This parameter is used only if
img
isnil
. - height
-
Height of the button clickable area. This parameter is used only if
img
isnil
. - params
-
An object containing any parameters you want passed to the
action
block. When the button is clicked, the following is called:@action.call @params
Note that this doesn’t force you to declare a block that takes parameters.
- retro
-
Whether the image should be loaded with the ‘retro’ option set (see
Gosu::Image
for details). If the value is omitted, theRes.retro_images
value will be used. - scale_x
-
Horizontal scale to draw the component with.
- scale_y
-
Vertical scale to draw the component with.
- anchor
-
See parameter with the same name in
Panel#initialize
for details. - action
-
The block of code executed when the button is clicked (or by calling the
click
method).
Obs.: This method accepts named parameters, but x
and y
are mandatory (also, img
is mandatory when width
and height
are not provided, and vice-versa).
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 |
# File 'lib/minigl/forms.rb', line 274 def initialize(x, y = nil, font = nil, text = nil, img = nil, text_color = 0, disabled_text_color = 0, over_text_color = 0, down_text_color = 0, center_x = true, center_y = true, margin_x = 0, margin_y = 0, width = nil, height = nil, params = nil, retro = nil, scale_x = 1, scale_y = 1, anchor = nil, &action) if x.is_a? Hash y = x[:y] font = x[:font] text = x[:text] img = x[:img] text_color = x.fetch(:text_color, 0) disabled_text_color = x.fetch(:disabled_text_color, 0) over_text_color = x.fetch(:over_text_color, 0) down_text_color = x.fetch(:down_text_color, 0) center_x = x.fetch(:center_x, true) center_y = x.fetch(:center_y, true) margin_x = x.fetch(:margin_x, 0) margin_y = x.fetch(:margin_y, 0) width = x.fetch(:width, nil) height = x.fetch(:height, nil) params = x.fetch(:params, nil) retro = x.fetch(:retro, nil) scale_x = x.fetch(:scale_x, 1) scale_y = x.fetch(:scale_y, 1) anchor = x.fetch(:anchor, nil) x = x[:x] end retro = Res.retro_images if retro.nil? @scale_x = scale_x @scale_y = scale_y @img = if img; Res.imgs img, 1, 4, true, '.png', retro else; nil; end @w = if img; @img[0].width * @scale_x else; width * @scale_x; end @h = if img; @img[0].height * @scale_y else; height * @scale_y; end @anchor_offset_x = x; @anchor_offset_y = y @anchor, x, y = FormUtils.check_anchor(anchor, x, y, @w, @h) super x, y, font, text, text_color, disabled_text_color @over_text_color = over_text_color @down_text_color = down_text_color @center_x = center_x @center_y = center_y @margin_x = margin_x @margin_y = margin_y set_position(x, y) @action = action @params = params @state = :up @img_index = @enabled ? 0 : 3 end |