123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package caurina.transitions.properties {
- /**
- * properties.TextShortcuts
- * Special properties for the Tweener class to handle MovieClip filters
- * The function names are strange/inverted because it makes for easier debugging (alphabetic order). They're only for internal use (on this class) anyways.
- *
- * @author Zeh Fernando, Nate Chatellier, Arthur Debert
- * @version 1.0.0
- */
- import caurina.transitions.Tweener;
- import caurina.transitions.AuxFunctions;
- import flash.text.TextFormat;
- public class TextShortcuts {
- /**
- * There's no constructor.
- */
- public function TextShortcuts () {
- trace ("This is an static class and should not be instantiated.")
- }
- /**
- * Registers all the special properties to the Tweener class, so the Tweener knows what to do with them.
- */
- public static function init(): void {
- // Normal properties
- Tweener.registerSpecialProperty("_text", _text_get, _text_set, null, _text_preProcess);
- // Tweener.registerSpecialPropertyModifier("_text", _text_modifier, _text_get);
- // TextFormat-based properties
- Tweener.registerSpecialPropertySplitter("_text_color", _generic_color_splitter, ["_text_color_r", "_text_color_g", "_text_color_b"]);
- Tweener.registerSpecialProperty("_text_color_r", _textFormat_property_get, _textFormat_property_set, ["color", true, "r"]);
- Tweener.registerSpecialProperty("_text_color_g", _textFormat_property_get, _textFormat_property_set, ["color", true, "g"]);
- Tweener.registerSpecialProperty("_text_color_b", _textFormat_property_get, _textFormat_property_set, ["color", true, "b"]);
- Tweener.registerSpecialProperty("_text_indent", _textFormat_property_get, _textFormat_property_set, ["indent"]);
- Tweener.registerSpecialProperty("_text_leading", _textFormat_property_get, _textFormat_property_set, ["leading"]);
- Tweener.registerSpecialProperty("_text_leftMargin", _textFormat_property_get, _textFormat_property_set, ["leftMargin"]);
- Tweener.registerSpecialProperty("_text_letterSpacing", _textFormat_property_get, _textFormat_property_set, ["letterSpacing"]);
- Tweener.registerSpecialProperty("_text_rightMargin", _textFormat_property_get, _textFormat_property_set, ["rightMargin"]);
- Tweener.registerSpecialProperty("_text_size", _textFormat_property_get, _textFormat_property_set, ["size"]);
- }
- // ==================================================================================================================================
- // NORMAL SPECIAL PROPERTY functions ------------------------------------------------------------------------------------------------
- // ----------------------------------------------------------------------------------------------------------------------------------
- // _text
- /**
- * Returns the current frame number from the movieclip timeline
- *
- * @param p_obj Object MovieClip object
- * @return Number The current frame
- */
- public static function _text_get (p_obj:Object, p_parameters:Array, p_extra:Object = null):Number {
- //return p_obj._currentFrame;
- return -p_obj.text.length;
- }
- /**
- * Sets the timeline frame
- *
- * @param p_obj Object MovieClip object
- * @param p_value Number New frame number
- */
- public static function _text_set (p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object = null): void {
- //p_obj.gotoAndStop(Math.round(p_value));
- //p_obj.text =
- if (p_value < 0) {
- // Old text
- p_obj.text = p_extra.oldText.substr(0, -Math.round(p_value));
- } else {
- // New text
- p_obj.text = p_extra.newText.substr(0, Math.round(p_value));
- }
- }
- public static function _text_preProcess (p_obj:Object, p_parameters:Array, p_originalValueComplete:Object, p_extra:Object): Number {
- p_extra.oldText = p_obj.text;
- p_extra.newText = p_originalValueComplete;
- return p_extra.newText.length;
- }
- // ==================================================================================================================================
- // PROPERTY GROUPING/SPLITTING functions --------------------------------------------------------------------------------------------
- // ----------------------------------------------------------------------------------------------------------------------------------
- // generic splitters
- /**
- * A generic color splitter - from 0xrrggbb to r, g, b with the name of the parameters passed
- *
- * @param p_value Number The original _color value
- * @return Array An array containing the .name and .value of all new properties
- */
- public static function _generic_color_splitter (p_value:Number, p_parameters:Array):Array {
- var nArray:Array = new Array();
- nArray.push({name:p_parameters[0], value:AuxFunctions.numberToR(p_value)});
- nArray.push({name:p_parameters[1], value:AuxFunctions.numberToG(p_value)});
- nArray.push({name:p_parameters[2], value:AuxFunctions.numberToB(p_value)});
- return nArray;
- }
- // ==================================================================================================================================
- // NORMAL SPECIAL PROPERTY functions ------------------------------------------------------------------------------------------------
- /**
- * Generic function for the textformat properties
- */
- public static function _textFormat_property_get (p_obj:Object, p_parameters:Array, p_extra:Object = null):Number {
- var fmt:TextFormat = p_obj.getTextFormat();
- var propertyName:String = p_parameters[0];
- var isColor:Boolean = p_parameters[1];
- if (!isColor) {
- // Standard property
- return (fmt[propertyName]);
- } else {
- // Composite, color channel
- var colorComponent:String = p_parameters[2];
- if (colorComponent == "r") return AuxFunctions.numberToR(fmt[propertyName]);
- if (colorComponent == "g") return AuxFunctions.numberToG(fmt[propertyName]);
- if (colorComponent == "b") return AuxFunctions.numberToB(fmt[propertyName]);
- }
- return NaN;
- }
- public static function _textFormat_property_set (p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object = null): void {
- var fmt:TextFormat = p_obj.getTextFormat();
- var propertyName:String = p_parameters[0];
- var isColor:Boolean = p_parameters[1];
- if (!isColor) {
- // Standard property
- fmt[propertyName] = p_value;
- } else {
- // Composite, color channel
- var colorComponent:String = p_parameters[2];
- if (colorComponent == "r") fmt[propertyName] = (fmt[propertyName] & 0xffff) | (p_value << 16);
- if (colorComponent == "g") fmt[propertyName] = (fmt[propertyName] & 0xff00ff) | (p_value << 8);
- if (colorComponent == "b") fmt[propertyName] = (fmt[propertyName] & 0xffff00) | p_value;
- }
-
- p_obj.defaultTextFormat = fmt;
- p_obj.setTextFormat(fmt);
- }
- }
- }
|