MainMenuScene.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "MainMenuScene.h"
  2. #include "Sprite.h"
  3. #include "initActor.h"
  4. #include "res.h"
  5. #include "MyButton.h"
  6. #include "GameScene.h"
  7. spMainMenuScene MainMenuScene::instance;
  8. MainMenuScene::MainMenuScene()
  9. {
  10. //create background
  11. spSprite sky = new Sprite;
  12. sky->setResAnim(res::ui.getResAnim("bg"));
  13. sky->attachTo(_view);
  14. /*
  15. 'initActor' is syntax sugar for
  16. spSprite logo = new Sprite;
  17. logo->setResAnim(res::ui.getResAnim("logo2")),
  18. logo->attachTo(_view);
  19. */
  20. //create logo
  21. spSprite logo = initActor(new Sprite,
  22. arg_resAnim = res::ui.getResAnim("logo2"),
  23. arg_attachTo = _view);
  24. logo->setPosition(_view->getSize() - logo->getSize());
  25. /*
  26. spSprite btn = new MyButton;
  27. btn->setResAnim(res::ui.getResAnim("play")),
  28. btn->setAnchor(Vector2(0.5f, 0.5f));
  29. btn->setPosition(_view->getSize()/2);
  30. btn->attachTo(_view);
  31. */
  32. //create play button at center
  33. spSprite btn = initActor(new MyButton,
  34. arg_name = "play",
  35. arg_resAnim = res::ui.getResAnim("play"),
  36. arg_anchor = Vector2(0.5f, 0.5f),
  37. arg_pos = _view->getSize() / 2,
  38. arg_attachTo = _view);
  39. //handle click to button
  40. btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
  41. //create menu button
  42. btn = initActor(new MyButton,
  43. arg_name = "exit",
  44. arg_resAnim = res::ui.getResAnim("menu"),
  45. arg_anchor = Vector2(0.5f, 0.5f),
  46. arg_attachTo = _view);
  47. //align it to top right
  48. btn->setX(_view->getWidth() - btn->getWidth() / 2);
  49. btn->setY(btn->getHeight() / 2);
  50. btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
  51. }
  52. void MainMenuScene::onEvent(Event* ev)
  53. {
  54. string id = ev->currentTarget->getName();
  55. if (id == "exit")
  56. {
  57. //request quit
  58. core::requestQuit();
  59. }
  60. if (id == "play")
  61. {
  62. //clicked to play button
  63. //change scene
  64. changeScene(GameScene::instance);
  65. }
  66. }