//////////////////////////////////////////////////////////////////////////////// // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to You under the Apache License, Version 2.0 // (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.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// package mx.effects { import mx.core.mx_internal; import mx.effects.effectClasses.ZoomInstance; use namespace mx_internal; [Alternative(replacement="spark.effects.Scale", since="4.0")] /** * The Zoom effect zooms the object in or out on a center point. * *
When you apply a Zoom effect to text rendered using a system font, * Flex scales the text between whole point sizes. * While you do not have to use embedded fonts when you apply a Zoom effect * to text, the Zoom will appear smoother when you apply it to embedded fonts.
* *Note: The Zoom effect does not work when the
* Container.autoLayout
property is false
.
The <mx:Zoom>
tag
* inherits all of the tag attributes of its superclass,
* and adds the following tag attributes:
* <mx:Zoom * id="ID" * captureRollEvents="false|true" * originX="Calculated" * originY="Calculated" * zoomWidthFrom="0.01" * zoomWidthTo="1.0" * zoomHeightFrom="0.01" * zoomHeightTo="1.0" * /> ** * @see mx.effects.effectClasses.ZoomInstance * @see mx.managers.LayoutManager * * @includeExample examples/ZoomEffectExample.mxml * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public class Zoom extends TweenEffect { include "../core/Version.as"; //-------------------------------------------------------------------------- // // Class constants // //-------------------------------------------------------------------------- /** * @private */ private static var AFFECTED_PROPERTIES:Array = [ "scaleX", "scaleY", "x", "y", "width", "height" ]; //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor. * * @param target The Object to animate with this effect. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public function Zoom(target:Object = null) { super(target); instanceClass = ZoomInstance; applyActualDimensions = false; // Make sure that the explicitWidth and explicitHeight are reset relevantProperties = [ "scaleX", "scaleY", "width", "height", "visible" ]; } //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // captureRollEvents //---------------------------------- [Inspectable(category="Other", defaultValue="false")] /** * If
true
, prevents Flex from dispatching the rollOut
* and rollOver
events if the mouse has not moved.
* Set this property to true
when you use the Zoom effect to
* toggle the effect target between a big and small size.
*
* For example, you use the rollOverEffect
to trigger
* the Zoom effect to reduce the size of the target.
* As the target shrinks, the mouse pointer is no longer over the target,
* triggering a rollOut
event, and
* the corresponding rollOutEffect
. By setting
* the captureRollEvents
property to true
,
* you prevent Flex from dispatching the rollOut
event
* unless it occurs because you moved the mouse.
The value must be between 0 and the width of the target component.
* * The default value istarget.width
/ 2, which is the center of the target.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var originX:Number;
//----------------------------------
// originY
//----------------------------------
[Inspectable(category="General", defaultValue="NaN")]
/**
* Number that represents the y-position of the zoom origin
* when the effect target is in a container that supports absolute positioning,
* such as the Canvas container. The zoom origin is the position on the target
* around which the Zoom effect is centered.
*
* The value must be between 0 and the height of the target component.
* * The default value istarget.height
/ 2, which is the center of the target.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var originY:Number;
//----------------------------------
// zoomHeightFrom
//----------------------------------
[Inspectable(category="General", defaultValue="0.01")]
/**
* Number that represents the scale at which to start the height zoom,
* as a percent between 0.01 and 1.0.
* The default value is 0.01, which is very small.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var zoomHeightFrom:Number;
//----------------------------------
// zoomHeightTo
//----------------------------------
[Inspectable(category="General", defaultValue="1")]
/**
* Number that represents the scale at which to complete the height zoom,
* as a percent between 0.01 and 1.0.
* The default value is 1.0, which is the object's normal size.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var zoomHeightTo:Number;
//----------------------------------
// zoomWidthFrom
//----------------------------------
[Inspectable(category="General", defaultValue="0.01")]
/**
* Number that represents the scale at which to start the width zoom,
* as a percent between 0.01 and 1.0.
* The default value is 0.01, which is very small.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var zoomWidthFrom:Number;
//----------------------------------
// zoomWidthTo
//----------------------------------
[Inspectable(category="General", defaultValue="1")]
/**
* Number that represents the scale at which to complete the width zoom,
* as a percent between 0.01 and 1.0.
* The default value is 1.0, which is the object's normal size.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var zoomWidthTo:Number;
//--------------------------------------------------------------------------
//
// Overridden methods
//
//--------------------------------------------------------------------------
/**
* @private
*/
override public function getAffectedProperties():Array /* of String */
{
return AFFECTED_PROPERTIES;
}
/**
* @private
*/
override protected function initInstance(instance:IEffectInstance):void
{
super.initInstance(instance);
var zoomInstance:ZoomInstance = ZoomInstance(instance);
zoomInstance.zoomWidthFrom = zoomWidthFrom;
zoomInstance.zoomWidthTo = zoomWidthTo;
zoomInstance.zoomHeightFrom = zoomHeightFrom;
zoomInstance.zoomHeightTo = zoomHeightTo;
zoomInstance.originX = originX;
zoomInstance.originY = originY;
zoomInstance.captureRollEvents = captureRollEvents;
}
}
}