TestPerf.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #pragma once
  2. #include "test.h"
  3. extern Resources resources;
  4. class PerfTest: public Test
  5. {
  6. public:
  7. spButton button;
  8. int count;
  9. bool _tweenAnim;
  10. bool _tweenRot;
  11. bool _tweenScale;
  12. PerfTest()
  13. {
  14. _tweenAnim = false;
  15. _tweenRot = false;
  16. _tweenScale = false;
  17. count = 0;
  18. addButton("add", "add 500");
  19. addButton("animate", "animate");
  20. addButton("scale0.01", "scale=0.01");
  21. addButton("scale0.2", "scale=0.2");
  22. addButton("scale0.5", "scale=0.5");
  23. toggle dr[] = {toggle("driver=null", 0, new VideoDriverNull), toggle("driver=default", 0, 0)};
  24. addToggle("driver", dr, 2);
  25. content->setTouchEnabled(false);
  26. content->setTouchChildrenEnabled(false);
  27. }
  28. void toggleClicked(string id, const toggle* data)
  29. {
  30. if (id == "driver")
  31. content->driver = (IVideoDriver*)(data->data);
  32. }
  33. void clicked(string id)
  34. {
  35. if (id == "add")
  36. {
  37. int a = 500;
  38. count += a;
  39. for (int i = 0; i < a; ++i)
  40. {
  41. spSprite sprite = new Sprite;
  42. sprite->setResAnim(resources.getResAnim("anim"));
  43. sprite->setAnchor(Vector2(0.5f, 0.5f));
  44. sprite->setScale(0.05f);
  45. sprite->setPosition(scalar::randFloat(0, (float)getWidth()), scalar::randFloat(0, (float)getHeight()));
  46. content->addChild(sprite);
  47. }
  48. char str[255];
  49. safe_sprintf(str, "add 500 (%d)", count);
  50. updateText(id, str);
  51. }
  52. if (id == "scale0.01")
  53. {
  54. spActor child = content->getFirstChild();
  55. while (child)
  56. {
  57. child->setScale(Vector2(1, 1) * 0.01f);
  58. child = child->getNextSibling();
  59. }
  60. }
  61. if (id == "scale0.2")
  62. {
  63. spActor child = content->getFirstChild();
  64. while (child)
  65. {
  66. child->setScale(Vector2(1, 1) * 0.2f);
  67. child = child->getNextSibling();
  68. }
  69. }
  70. if (id == "scale0.5")
  71. {
  72. spActor child = content->getFirstChild();
  73. while (child)
  74. {
  75. child->setScale(Vector2(1, 1) * 0.5f);
  76. child = child->getNextSibling();
  77. }
  78. }
  79. if (id == "animate")
  80. {
  81. spActor child = content->getFirstChild();
  82. while (child)
  83. {
  84. spTween t = 0;
  85. if (!_tweenAnim)
  86. t = createTween(TweenAnim(resources.getResAnim("anim")), 500, -1);
  87. else if (!_tweenRot)
  88. t = createTween(Actor::TweenRotation((float)MATH_PI * 2.0f), 3000, -1);
  89. else if (!_tweenScale)
  90. t = createTween(Actor::TweenScale(Vector2(0.2f, 0.2f)), 3000, -1, true);
  91. if (t)
  92. child->addTween(t);
  93. child = child->getNextSibling();
  94. }
  95. if (!_tweenAnim)
  96. _tweenAnim = true;
  97. else
  98. {
  99. if (!_tweenRot)
  100. _tweenRot = true;
  101. else if (!_tweenScale)
  102. {
  103. updateText(id, "");
  104. _tweenScale = true;
  105. }
  106. }
  107. }
  108. }
  109. };