Changed the button logic
Before, you could hold mouse left button, drag it unto the button and change the sprite to "pressed" and, when released, the sfx would play. Now, you actually have to press the button in order to change the sprite to "pressed" and play the sfx. It's a really minor change and maybe not welcomed, I only wanted better button logic on a program specifically made to show how to program button interaction.
This commit is contained in:
parent
d8ed3fb31e
commit
09e717f0f3
|
|
@ -2,12 +2,10 @@
|
||||||
*
|
*
|
||||||
* raylib [textures] example - sprite button
|
* raylib [textures] example - sprite button
|
||||||
*
|
*
|
||||||
* Example originally created with raylib 2.5, last time updated with raylib 2.5
|
* This example has been created using raylib 2.5 (www.raylib.com)
|
||||||
|
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
|
||||||
*
|
*
|
||||||
* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
|
* Copyright (c) 2019 Ramon Santamaria (@raysan5)
|
||||||
* BSD-like license that allows static linking with closed source software
|
|
||||||
*
|
|
||||||
* Copyright (c) 2019-2022 Ramon Santamaria (@raysan5)
|
|
||||||
*
|
*
|
||||||
********************************************************************************************/
|
********************************************************************************************/
|
||||||
|
|
||||||
|
|
@ -15,9 +13,6 @@
|
||||||
|
|
||||||
#define NUM_FRAMES 3 // Number of frames (rectangles) for the button sprite texture
|
#define NUM_FRAMES 3 // Number of frames (rectangles) for the button sprite texture
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------
|
|
||||||
// Program main entry point
|
|
||||||
//------------------------------------------------------------------------------------
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
// Initialization
|
// Initialization
|
||||||
|
|
@ -41,6 +36,7 @@ int main(void)
|
||||||
|
|
||||||
int btnState = 0; // Button state: 0-NORMAL, 1-MOUSE_HOVER, 2-PRESSED
|
int btnState = 0; // Button state: 0-NORMAL, 1-MOUSE_HOVER, 2-PRESSED
|
||||||
bool btnAction = false; // Button action should be activated
|
bool btnAction = false; // Button action should be activated
|
||||||
|
bool btnPressed = false; // Check if button has been actually pressed
|
||||||
|
|
||||||
Vector2 mousePoint = { 0.0f, 0.0f };
|
Vector2 mousePoint = { 0.0f, 0.0f };
|
||||||
|
|
||||||
|
|
@ -54,14 +50,25 @@ int main(void)
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
mousePoint = GetMousePosition();
|
mousePoint = GetMousePosition();
|
||||||
btnAction = false;
|
btnAction = false;
|
||||||
|
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && CheckCollisionPointRec(mousePoint, btnBounds)) btnPressed = true;
|
||||||
|
|
||||||
// Check button state
|
// Check button state
|
||||||
if (CheckCollisionPointRec(mousePoint, btnBounds))
|
if (CheckCollisionPointRec(mousePoint, btnBounds))
|
||||||
{
|
{
|
||||||
if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) btnState = 2;
|
if (btnPressed && IsMouseButtonDown(MOUSE_BUTTON_LEFT)) btnState = 2;
|
||||||
else btnState = 1;
|
else btnState = 1;
|
||||||
|
|
||||||
if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) btnAction = true;
|
if (btnPressed && IsMouseButtonReleased(MOUSE_BUTTON_LEFT))
|
||||||
|
{
|
||||||
|
btnAction = true;
|
||||||
|
btnPressed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (btnPressed)
|
||||||
|
{
|
||||||
|
btnAction = true;
|
||||||
|
btnState = 0;
|
||||||
|
btnPressed = false;
|
||||||
}
|
}
|
||||||
else btnState = 0;
|
else btnState = 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user