Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. package {
  2. import flash.display.*;
  3. import flash.events.*;
  4. import flash.errors.*;
  5. import flash.net.URLRequest;
  6. public class AssetManager {
  7. // a class to hold external assets and manage loading
  8. // assets' references are held in an array
  9. // *** properties ***
  10. var assets: Array;
  11. // *** methods ***
  12. // the constructor function
  13. public function AssetManager() {
  14. // set up the array
  15. assets = new Array();
  16. }
  17. // loads an asset from a given location
  18. public function addAsset(fileName: String): int {
  19. // make a loader for the asset
  20. var loader: Loader = new Loader();
  21. // set an event listener for loading error events
  22. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioerrorListener);
  23. // set an event listener for load progress events
  24. loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
  25. // set an event listener for load complete event
  26. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener);
  27. // try the load
  28. try {
  29. loader.load(new URLRequest(fileName));
  30. // save the loader if load was allowed|
  31. assets.push(loader);
  32. return assets.length - 1;
  33. } catch (e: SecurityError) {
  34. // trying to load from a forbidden source
  35. trace("AssetManager: Security Error - Not allowed to load file " + fileName);
  36. }
  37. return -1;
  38. }
  39. private function ioerrorListener(e: IOErrorEvent): void {
  40. trace("AsssetManager: Error - could not load a file");
  41. // find the Loader that couldn't load file and delete it
  42. for (var i: Number = 0; i < getAssetCount(); i++) {
  43. var info: LoaderInfo = assets[i].contentLoaderInfo;
  44. if (info == e.target) {
  45. assets[i] = null;
  46. }
  47. }
  48. }
  49. private function progressListener(e: ProgressEvent): void {
  50. // you could display the progress of the download here
  51. }
  52. private function completeListener(e: Event): void {
  53. trace("AssetManager: Info - load complete for" + e.target.url);
  54. }
  55. // tests if all assets have loaded yet
  56. public function loaded(): Boolean {
  57. var loadDone: Boolean = true;
  58. // go through each in turn using a loop
  59. for (var i: Number = 0; i < getAssetCount(); i++) {
  60. if (assets[i] != null) {
  61. var info: LoaderInfo = assets[i].contentLoaderInfo;
  62. // if the load is not complete, switch variable
  63. if (info.bytesLoaded != info.bytesTotal) {
  64. loadDone = false;
  65. }
  66. }
  67. }
  68. return loadDone;
  69. }
  70. // gets an asset based on its number
  71. public function getAsset(id: Number): * {
  72. // send back the asset in that position in the array
  73. if (assets[id] != null) {
  74. return Loader(assets[id]).content;
  75. }
  76. // or null if it didn't load
  77. return null;
  78. }
  79. // returns the number of assets
  80. public function getAssetCount(): Number {
  81. // send back the number of assets
  82. return assets.length;
  83. }
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement