Explosion.js 1.4 KB

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