/*****************************************************
*
* 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.display.DisplayObject;
import org.osmf.events.DisplayObjectEvent;
/**
* Dispatched when the trait's displayObject
property has changed.
* This occurs when a different DisplayObject is assigned to represent the media.
*
* @eventType org.osmf.events.DisplayObjectEvent.DISPLAY_OBJECT_CHANGE
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
[Event(name="displayObjectChange",type="org.osmf.events.DisplayObjectEvent")]
/**
* Dispatched when the trait's mediaWidth and/or mediaHeight property has changed.
*
* @eventType org.osmf.events.DisplayObjectEvent.MEDIA_SIZE_CHANGE
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
[Event(name="mediaSizeChange",type="org.osmf.events.DisplayObjectEvent")]
/**
* DisplayObjectTrait defines the trait interface for media that expose a DisplayObject,
* and which may have intrinsic dimensions. The intrinsic dimensions of a piece of
* media refer to its dimensions without regard to those observed when it is projected
* onto the stage.
*
*
For an image, for example, the intrinsic dimensions are the height and * width of the image as it is stored.
* *Use the MediaElement.hasTrait(MediaTraitType.DISPLAY_OBJECT)
method to query
* whether a media element has a trait of this type.
* If hasTrait(MediaTraitType.DISPLAY_OBJECT)
returns true
,
* use the MediaElement.getTrait(MediaTraitType.DISPLAY_OBJECT)
method
* to get an object that is of this type.
Forces non numerical and negative values to zero.
* *If the either the width or the height differs from the * previous width or height, dispatches a mediaSizeChange event.
* * @param width The new width. * @param height The new height. * * * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion OSMF 1.0 */ protected final function setMediaSize(mediaWidth:Number, mediaHeight:Number):void { if ( mediaWidth != _mediaWidth || mediaHeight != _mediaHeight ) { mediaSizeChangeStart(mediaWidth, mediaHeight); var oldMediaWidth:Number = _mediaWidth; var oldMediaHeight:Number = _mediaHeight; _mediaWidth = mediaWidth; _mediaHeight = mediaHeight; mediaSizeChangeEnd(oldMediaWidth, oldMediaHeight); } } /** * Called immediately before thedisplayObject
property is changed.
* Subclasses can override this method to communicate the change to the media.
* @param newView NewdisplayObject
value.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
protected function displayObjectChangeStart(newView:DisplayObject):void
{
}
/**
* Called just after the displayObject
property has changed.
* Dispatches the change event.
* Subclasses that override should call this method to * dispatch the displayObjectChange event.
* * @param oldDisplayObject PreviousdisplayObject
value.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
protected function displayObjectChangeEnd(oldDisplayObject:DisplayObject):void
{
dispatchEvent(new DisplayObjectEvent(DisplayObjectEvent.DISPLAY_OBJECT_CHANGE, false, false, oldDisplayObject, _displayObject));
}
/**
* Called just before a call to setMediaSize()
.
* Subclasses can override this method to communicate the change to the media.
* @param newMediaWidth New mediaWidth
value.
* @param newMediaHeight New mediaHeight
value.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
protected function mediaSizeChangeStart(newMediaWidth:Number, newMediaHeight:Number):void
{
}
/**
* Called just after setMediaSize()
has applied new mediaWidth
* and/or mediaHeight values. Dispatches the change event.
*
* Subclasses that override should call this method * to dispatch the mediaSizeChange event.
* * @param oldMediaWidth PreviousmediaWidth
value.
* @param oldMediaHeight Previous mediaHeight
value.
*
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
protected function mediaSizeChangeEnd(oldMediaWidth:Number, oldMediaHeight:Number):void
{
dispatchEvent(new DisplayObjectEvent(DisplayObjectEvent.MEDIA_SIZE_CHANGE, false, false, null, null, oldMediaWidth, oldMediaHeight, _mediaWidth, _mediaHeight));
}
private var _displayObject:DisplayObject;
private var _mediaWidth:Number = 0;
private var _mediaHeight:Number = 0;
}
}