Explosion.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. var game = Atomic.game;
  2. var node = self.node;
  3. var cache = game.cache;
  4. var expSheet = cache.getResource("SpriteSheet2D", "Sprites/explosions_sheet.xml");
  5. var boomSound = cache.getResource("Sound", "Sounds/boom" + Math.round(Math.random(0, 1)) + ".wav");
  6. var sprites = [];
  7. var frame = 0;
  8. var frameTime = 0;
  9. self.init = function(spawnPosition) {
  10. self.spawnPosition = spawnPosition;
  11. }
  12. // using start to initialize the script component
  13. function start() {
  14. var i = Math.round(Math.random() * 7);
  15. for (var j = 0; j < 16; j++)
  16. {
  17. sprites.push(expSheet.getSprite(i + "_" + j));
  18. }
  19. // add a sprite component to our node
  20. var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
  21. sprite2D.blendMode = Atomic.BLEND_ADDALPHA
  22. sprite2D.sprite = sprites[0];
  23. node.position2D = self.spawnPosition;
  24. node.scale2D = [1.5, 1.5];
  25. sprite2D.orderInLayer = 200;
  26. self.soundSource = node.createComponent("SoundSource");
  27. self.soundSource.soundType = Atomic.SOUND_EFFECT;
  28. self.soundSource.gain;
  29. self.soundSource.play(boomSound);
  30. }
  31. // update function called per frame with delta time
  32. function update(timeStep) {
  33. frameTime += timeStep;
  34. if (frameTime > .05)
  35. {
  36. frameTime = 0;
  37. frame++;
  38. if (frame == 16)
  39. {
  40. Atomic.destroy(node);
  41. return;
  42. }
  43. self.sprite2D.sprite = sprites[frame];
  44. }
  45. }