mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-04-25 21:55:03 +02:00
137 lines
5.1 KiB
Plaintext
137 lines
5.1 KiB
Plaintext
|
|
Most, hogy már van gombunk, készítsünk egy újat / fejlesszük tovább a
|
|
MainScene osztályt, úgy, hogy legyen kirakva a a képernyőre néhány gomb,
|
|
és amikor rákattintunk egyre, akkor hívassunk meg egy függvényt,
|
|
magában a MainScene osztályban.
|
|
|
|
|---------------------------------------------------------------------------------------|
|
|
| class MainScene : public Scene |
|
|
|---------------------------------------------------------------------------------------|
|
|
| + void event(const SDL_Event &ev) |
|
|
| + void update(float delta) |
|
|
| + void render() |
|
|
| |
|
|
| ----------------------------------------------------------------- |
|
|
| | A.Verzió: | |
|
|
| | + static void on_first_button_clicked() | |
|
|
| | ------------------------------------------------ | |
|
|
| | B Verzióhoz: | |
|
|
| | + static void on_first_button_clicked_member(void* cls) | |
|
|
| ------------------------------------------------------------------ |
|
|
| |
|
|
| + member_print() |
|
|
| |
|
|
| + MainScene() |
|
|
| + ~MainScene() |
|
|
| |
|
|
| + Camera *_camera |
|
|
| + Image *_image |
|
|
| + Texture *_texture |
|
|
| + Sprite *_sprite |
|
|
| |
|
|
| + Button * b1 |
|
|
| + Button * b2 |
|
|
| + Button * b3 |
|
|
|---------------------------------------------------------------------------------------|
|
|
|
|
A pszeudokód:
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
void event(const SDL_Event &ev):
|
|
b1->event(ev)
|
|
b2->event(ev)
|
|
b3->event(ev)
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
void update(float delta):
|
|
return
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
void render():
|
|
Renderer::get_singleton()->clear()
|
|
|
|
_camera->bind()
|
|
|
|
b1->render()
|
|
b2->render()
|
|
b3->render()
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
void on_first_button_clicked():
|
|
printf("Click!\n")
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
void on_first_button_clicked_member(void* cls):
|
|
if (cls):
|
|
reinterpret_cast<MainScene*>(cls)->member_print()
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
void member_print():
|
|
printf("Click Member!\n")
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
MainScene():
|
|
_camera = new Camera()
|
|
_image = new Image("ti.bmp")
|
|
_texture = new Texture(_image)
|
|
|
|
b1 = new Button()
|
|
b1->transform = Rect2(0, 0, 100, 100)
|
|
b1->up = new Sprite(_texture)
|
|
b1->down = new Sprite(_texture, Color(100, 100, 100))
|
|
b1->hover = new Sprite(_texture, Color(200, 200, 200))
|
|
//a verzió alap:
|
|
//b1->on_click = MainScene::on_first_button_clicked;
|
|
|
|
//a verzió lambda 1:
|
|
//b1->on_click = []() -> void { printf("Click lambda!"); };
|
|
|
|
//a verzió lambda 2:
|
|
b1->on_click = [this]() -> void { this->member_print(); };
|
|
|
|
b2 = new Button()
|
|
b2->transform = Rect2(0, 110, 100, 100)
|
|
b2->off = new Sprite(_texture, Color(50, 50, 50))
|
|
b2->state = Button::BUTTON_STATE_OFF
|
|
|
|
b3 = new Button()
|
|
b3->transform = Rect2(0, 220, 100, 100)
|
|
b3->up = new Sprite(_texture)
|
|
b3->down = new Sprite(_texture, Color(100, 100, 100))
|
|
b3->hover = new Sprite(_texture, Color(200, 200, 200))
|
|
b3->cls = this
|
|
b3->on_click_member = on_first_button_clicked_member
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
~MainScene():
|
|
_texture->free()
|
|
_image->free()
|
|
|
|
delete b1->up
|
|
delete b1->down
|
|
delete b1->hover
|
|
delete b1
|
|
|
|
delete b2->off
|
|
delete b2
|
|
|
|
delete b3->up
|
|
delete b3->down
|
|
delete b3->hover
|
|
delete b3
|
|
|
|
delete _texture
|
|
delete _image
|
|
delete _camera
|
|
|
|
----------------------------------------------------------------------------
|
|
|