Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package {
- import flash.display.*;
- import flash.events.*;
- import flash.errors.*;
- import flash.net.URLRequest;
- public class AssetManager {
- // a class to hold external assets and manage loading
- // assets' references are held in an array
- // *** properties ***
- var assets: Array;
- // *** methods ***
- // the constructor function
- public function AssetManager() {
- // set up the array
- assets = new Array();
- }
- // loads an asset from a given location
- public function addAsset(fileName: String): int {
- // make a loader for the asset
- var loader: Loader = new Loader();
- // set an event listener for loading error events
- loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioerrorListener);
- // set an event listener for load progress events
- loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
- // set an event listener for load complete event
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener);
- // try the load
- try {
- loader.load(new URLRequest(fileName));
- // save the loader if load was allowed|
- assets.push(loader);
- return assets.length - 1;
- } catch (e: SecurityError) {
- // trying to load from a forbidden source
- trace("AssetManager: Security Error - Not allowed to load file " + fileName);
- }
- return -1;
- }
- private function ioerrorListener(e: IOErrorEvent): void {
- trace("AsssetManager: Error - could not load a file");
- // find the Loader that couldn't load file and delete it
- for (var i: Number = 0; i < getAssetCount(); i++) {
- var info: LoaderInfo = assets[i].contentLoaderInfo;
- if (info == e.target) {
- assets[i] = null;
- }
- }
- }
- private function progressListener(e: ProgressEvent): void {
- // you could display the progress of the download here
- }
- private function completeListener(e: Event): void {
- trace("AssetManager: Info - load complete for" + e.target.url);
- }
- // tests if all assets have loaded yet
- public function loaded(): Boolean {
- var loadDone: Boolean = true;
- // go through each in turn using a loop
- for (var i: Number = 0; i < getAssetCount(); i++) {
- if (assets[i] != null) {
- var info: LoaderInfo = assets[i].contentLoaderInfo;
- // if the load is not complete, switch variable
- if (info.bytesLoaded != info.bytesTotal) {
- loadDone = false;
- }
- }
- }
- return loadDone;
- }
- // gets an asset based on its number
- public function getAsset(id: Number): * {
- // send back the asset in that position in the array
- if (assets[id] != null) {
- return Loader(assets[id]).content;
- }
- // or null if it didn't load
- return null;
- }
- // returns the number of assets
- public function getAssetCount(): Number {
- // send back the number of assets
- return assets.length;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement