/***************************************************** * * Copyright 2009 Adobe Systems Incorporated. All Rights Reserved. * ***************************************************** * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * * The Initial Developer of the Original Code is Adobe Systems Incorporated. * Portions created by Adobe Systems Incorporated are Copyright (C) 2009 Adobe Systems * Incorporated. All Rights Reserved. * *****************************************************/ package org.osmf.traits { import flash.errors.IllegalOperationError; import flash.events.EventDispatcher; import org.osmf.events.LoaderEvent; import org.osmf.media.MediaResourceBase; import org.osmf.utils.OSMFStrings; /** * Dispatched when the state of a LoadTrait being loaded or unloaded by * the LoaderBase has changed. * * @eventType org.osmf.events.LoaderEvent.LOAD_STATE_CHANGE * * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion OSMF 1.0 */ [Event(name="loadStateChange", type="org.osmf.events.LoaderEvent")] /** * LoaderBase is the base class for objects that are capable of loading * and unloading LoadTraits. * *
A MediaElement that has the LoadTrait uses a LoaderBase to perform the * actual load operation. * This decoupling of the loading and unloading from the media allows a * MediaElement to use different loaders for different circumstances.
* * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion OSMF 1.0 */ public class LoaderBase extends EventDispatcher { /** * Indicates whether this loader is capable of handling (loading) * the given MediaResourceBase. * * @param resource The media resource in question. * * @return True if this loader can handle the given resource. * * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion OSMF 1.0 */ public function canHandleResource(resource:MediaResourceBase):Boolean { return false; } /** * Loads the specified LoadTrait. Changes the load state of the LoadTrait. * Dispatches theloadStateChange
event with every state change.
*
* Typical states are LOADING
while the LoadTrait is loading,
* READY
after it has successfully completed loading,
* and LOAD_ERROR
if it fails to complete loading.
If the LoadTrait's LoadState is LOADING
or
* READY
when the method is called, this method throws
* an error.
Subclasses should override the executeLoad
method to perform
* the actual load operation.
IllegalOperationError
* If this loader cannot load the given LoadTrait (as determined by
* the canHandleResource()
method),
* or if the LoadTrait's LoadState is LOADING
or
* READY
.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public final function load(loadTrait:LoadTrait):void
{
validateLoad(loadTrait);
executeLoad(loadTrait);
}
/**
* Unloads the specified LoadTrait. Changes the load state of the LoadTrait.
* Dispatches the loaderStateChange
event with every state change.
*
* Typical states are UNLOADING
while the LoadTrait is unloading,
* UNINITIALIZED
after it has successfully completed unloading,
* and LOAD_ERROR
if it fails to complete unloading.
If the LoadTrait's LoadState is not READY
when the method
* is called, this method throws an error.
Subclasses should override the executeUnload
method to perform
* the actual unload operation.
IllegalOperationError
* If this loader cannot unload the specified LoadTrait (as determined by
* the canHandleResource()
method),
* or if the LoadTrait's LoadState is not READY
.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public final function unload(loadTrait:LoadTrait):void
{
validateUnload(loadTrait);
executeUnload(loadTrait);
}
// Protected
/**
* Executes the load of the given LoadTrait.
*
* This method is invoked by load()
.
* Subclasses should override this method to provide their
* own implementation of the load operation.
This method is invoked by unload()
.
* Subclasses should override this method to provide their
* own implementation of the unload operation.