trinAnimation.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. function TrinAnimation(img, name) {
  2. if (name === undefined) {
  3. name = "noname";
  4. }
  5. this.image = img;
  6. this.frames = [];
  7. this.name = name;
  8. this.totalFrames = 0;
  9. this.width = 0;
  10. this.height = 0;
  11. }
  12. TrinAnimation.prototype = {
  13. TYPE_IMAGE: 0,
  14. TYPE_ANIMATION: 1,
  15. IMAGES: [],
  16. ANIMATIONS: [],
  17. addImage: function(img) {
  18. if (this.IMAGES[img.info.name] === undefined) {
  19. this.IMAGES[img.info.name] = img;
  20. } else {
  21. console.log("Image with name " + img.info.name + " is already exists.");
  22. }
  23. },
  24. makeAnimation: function(imgName, name, frameWidth, frameHeight, frames) {
  25. var img = this.IMAGES[imgName];
  26. if (img === undefined || img === null || name === undefined) {
  27. _TrinGame.log("No such loaded image \"" + imgName + "\"");
  28. return;
  29. }
  30. if (frameWidth === undefined) {
  31. frameWidth = img.width;
  32. }
  33. if (frameHeight === undefined) {
  34. frameHeight = img.height;
  35. }
  36. if (frames === undefined || frames.length === 0) {
  37. frames = [0];
  38. }
  39. var animation = new TrinAnimation(img, name);
  40. var rows = Math.floor(img.height / frameHeight);
  41. var columns = Math.floor(img.width / frameWidth);
  42. for (var i = 0; i < frames.length; i++) {
  43. var frameNum = frames[i];
  44. var frame = new TrinRectangle((frameNum % columns) * frameWidth, Math.floor(frameNum / columns) * frameHeight, frameWidth, frameHeight);
  45. animation.frames.push(frame);
  46. }
  47. animation.totalFrames = animation.frames.length;
  48. this.ANIMATIONS[name] = animation;
  49. },
  50. getAnimation: function(name) {
  51. if (TrinAnimation.prototype.ANIMATIONS[name] === undefined) {
  52. console.log("No such animation with name \"" + name + "\".");
  53. return null;
  54. }
  55. return TrinAnimation.prototype.ANIMATIONS[name];
  56. }
  57. };
  58. TrinAnimation.prototype.destroy = function() {
  59. this.frames = null;
  60. this.image = null;
  61. };