CustumUpdaterTest
♥0 |
Line 136 |
Modified 2010-04-20 04:41:03 |
MIT License
archived:2017-03-20 11:18:13
ActionScript3 source code
/**
* Copyright yd_niku ( http://wonderfl.net/user/yd_niku )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/7c8y
*/
package {
import flash.display.Sprite;
import flash.text.*;
import org.libspark.betweenas3.BetweenAS3;
public class FlashTest extends Sprite {
public function FlashTest() {
//I can't register my updater to BetweenAS3
//TextFieldUpdater.register( BetweenAS3.updaterClassRegistry );
var field:TextField = new TextField();
field.textColor = 0xFF0000;
field.text= "TESTTEST";
addChild(field);
BetweenAS3.to( field, { textColor:0x0000FF }, 1 ).play();
}
}
}
import flash.text.TextField;
import org.libspark.betweenas3.core.updaters.AbstractUpdater;
import org.libspark.betweenas3.core.utils.ClassRegistry;
internal class TextFieldUpdater extends AbstractUpdater
{
public static const TARGET_PROPERTIES:Array = [
'textColor'
];
public static function register(registry:ClassRegistry):void
{
registry.registerClassWithTargetClassAndPropertyNames(TextFieldUpdater, TextField, TARGET_PROPERTIES);
}
protected var _target:TextField = null;
protected var _ftc:Boolean = false;
protected var _stc:uint = NaN;
protected var _dtc:uint = NaN;
protected var _sr:Number = NaN;
protected var _sg:Number = NaN;
protected var _sb:Number = NaN;
protected var _dr:Number = NaN;
protected var _dg:Number = NaN;
protected var _db:Number = NaN;
protected var _flags:uint = 0;
/**
* @inheritDoc
*/
override public function get target():Object
{
return _target;
}
/**
* @private
*/
override public function set target(value:Object):void
{
_target = value as TextField;trace(_stc)
}
/**
* @inheritDoc
*/
override public function setSourceValue(propertyName:String, value:Number, isRelative:Boolean = false):void
{
if (propertyName == 'textColor') {
_ftc = true;
_stc = value;
_sr = (_stc >> 16 ) & 0xFF;
_sg = (_stc >> 8 ) & 0xFF;
_sb = _stc & 0xFF;
_flags |= isRelative ? 0x001 : 0;
}
}
/**
* @inheritDoc
*/
override public function setDestinationValue(propertyName:String, value:Number, isRelative:Boolean = false):void
{
if (propertyName == 'textColor') {
_ftc = true;
_dtc = value;
_dr = (_dtc >> 16 ) & 0xFF;
_dg = (_dtc >> 8 ) & 0xFF;
_db = _dtc & 0xFF;
_flags |= isRelative ? 0x002 : 0;
}
}
override protected function resolveValues():void
{
var t:TextField = _target;
if (_ftc) {
if (isNaN(_sr)) {
_stc = t.textColor;
_sr = (_stc >> 16 ) & 0xFF;
_sg = (_stc >> 8 ) & 0xFF;
_sb = _stc & 0xFF;
}
else if ((_flags & 0x001) != 0) {
var vs:uint = t.textColor;
var vsr:uint = (vs >> 16) & 0xFF;
var vsg:uint = (vs >> 8) & 0xFF;
var vsb:uint = (vs >> 0) & 0xFF;
_sr += vsr;
_sg += vsg;
_sb += vsb;
_stc = _sr<<16 | _sg<<8 | _sb;
}
if (isNaN(_dr)) {
_dtc = t.textColor;
_dr = (_dtc >> 16 ) & 0xFF;
_dg = (_dtc >> 8 ) & 0xFF;
_db = _dtc & 0xFF;
}
else if ((_flags & 0x002) != 0) {
var vd:uint = t.textColor;
var vdr:uint = (vd >> 16) & 0xFF;
var vdg:uint = (vd >> 8) & 0xFF;
var vdb:uint = (vd >> 0) & 0xFF;
_dr += vdr;
_dg += vdg;
_db += vdb;
_dtc = _dr<<16 | _dg<<8 | _db;
}
}
}
/**
* @inheritDoc
*/
override protected function updateObject(factor:Number):void
{
var t:TextField = _target;
var invert:Number = 1.0 - factor;
if (_ftc) {
var tr:uint = _sr * invert + _dr * factor;
var tg:uint = _sg * invert + _dg* factor;
var tb:uint = _sb* invert + _db * factor;
t.textColor = tr << 16 | tg << 8 | tb;
}
}
override protected function newInstance():AbstractUpdater
{
return new TextFieldUpdater();
}
override protected function copyFrom(source:AbstractUpdater):void
{
super.copyFrom(source);
var obj:TextFieldUpdater = source as TextFieldUpdater;
_target = obj._target;
_stc = obj._stc;
_dtc = obj._dtc;
_sr = obj._sr;
_sg = obj._sg;
_sb = obj._sb;
_dr = obj._sr;
_dg = obj._sg;
_db = obj._sb;
_flags = obj._flags;
}
}