Explosion.js 1.4 KB

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