RebusOptionCard.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. class RebusOptionCard extends Object2D
  2. {
  3. thumb = null;
  4. imgName = "";
  5. isAnswer = false;
  6. selected = false;
  7. selectable = true;
  8. fillColor = new Color(200, 200, 200);
  9. mouseOver = false;
  10. mousePress = false;
  11. _initSignals()
  12. {
  13. this.addSignal("selected");
  14. }
  15. _setup()
  16. {
  17. var sprite = new Sprite2D("sprite", this.thumb);
  18. sprite.width = 250;
  19. sprite.height = 250;
  20. sprite.setPosition(0, -75);
  21. this.addChild(sprite);
  22. var area = new Area2D("area", SHAPES.RECT, new Rect(300, 400), true);
  23. area.connect("mouseEntered", this, "_onMouseEntered");
  24. area.connect("mouseExited", this, "_onMouseExited");
  25. this.addChild(area);
  26. this.addChild(new RebusCardVisualEffect("CardVfx"));
  27. }
  28. _update(delta)
  29. {
  30. if (this.selectable && this.mouseOver)
  31. {
  32. if (InputHandler.mouseIsClicked)
  33. {
  34. this.selected = true;
  35. this.selectable = false;
  36. this.emitSignal("selected", this.isAnswer);
  37. }
  38. if (InputHandler.mouseIsPressed)
  39. {
  40. this.scale.x = max(this.scale.x - 3.0 * delta, 0.95);
  41. this.scale.y = max(this.scale.y - 3.0 * delta, 0.95);
  42. }
  43. else
  44. {
  45. this.scale.x = min(this.scale.x + 2.0 * delta, 1.1);
  46. this.scale.y = min(this.scale.y + 2.0 * delta, 1.1);
  47. }
  48. }
  49. else
  50. {
  51. this.scale.x = max(this.scale.x - 2.0 * delta, 1);
  52. this.scale.y = max(this.scale.y - 2.0 * delta, 1);
  53. }
  54. }
  55. _draw(delta, db)
  56. {
  57. db.rectMode(CENTER);
  58. db.fill(this.fillColor.getP5Color());
  59. db.rect(0, 0, 300, 400, 10, 10);
  60. db.textAlign(CENTER, CENTER);
  61. db.fill(0);
  62. db.textSize(40);
  63. db.text(this.imgName, 0, 100);
  64. if (this.selected && !this.isAnswer)
  65. {
  66. db.fill(0, 80);
  67. db.rect(0, 0, 300, 400, 10, 10);
  68. }
  69. }
  70. _onMouseEntered()
  71. {
  72. this.mouseOver = true;
  73. }
  74. _onMouseExited()
  75. {
  76. this.mouseOver = false;
  77. }
  78. }