📄 widthtween.as
字号:
/**
* Copyright (c) 2007 Moses Gunesch
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.mosesSupposes.go.tutorials
{
import flash.display.DisplayObject;
import org.goasap.items.LinearGo;
/** * A basic example of how you could build a tween on LinearGo.
*
* @see SizeTweenMg SizeTweenMg: a similar example that works with OverlapMonitor
*
* @author Moses Gunesch */ public class WidthTween extends LinearGo { // -== Public Properties ==-
// In this example, the tween class has a width property, but the point of Go is that
// the design is left up to you. If you prefer to parse an object or XML, or accept an
// array of properties and targets, all of that is left up to you. public function get width() : Number { return _width; } public function set width(value : Number):void { if (_state==STOPPED) _width = value; }
// See note above width getter, same applies here. Note that I've picked a specific datatype
// for my tween target, but again it's wide open, including the variable name. The only thing
// that tends to be universal is that you need at least one target and at least one property. public function get target() : DisplayObject { return _target; } public function set target(obj : DisplayObject):void { if (_state==STOPPED) _target = obj; }
// -== Protected Properties ==- protected var _target : DisplayObject; protected var _width : Number; protected var _startWidth : Number; protected var _changeWidth : Number;
// -== Public Methods ==-
// You can design your own constructor for your tween classes of course! public function WidthTween( target : DisplayObject=null, widthTo : Number=NaN, delay : Number=NaN, duration : Number=NaN, easing : Function=null ) { super(delay, duration, easing); _target = target; _width = widthTo; }
// CONVENTION ALERT!
// * Be aware that there are two standard conventions in Go that need to be
// implemented manually by each LinearGo subclass, numbered below.
override public function start():Boolean { if (!_target || !_width || isNaN(_width)) return false;
_startWidth = _target.width; // Store start & change values for use in onUpdate.
// Convention #1: useRelative (*see note above) _changeWidth = (useRelative ? _width // relative positioning: like if the user set -10, we should change "by" that much.
: _width - _startWidth); // absolute positioning: the tween spans the difference from existing width.
return (super.start()); }
// Convention #2:useRounding (*see note above)
// Always call correctValue() on tween values before setting them to targets.
// This fixes NaNs to 0 and applies Math.round based on the useRounding setting.
override protected function onUpdate(type:String) : void
{
// Basic tween implementation using the formula Value=Start+(Change*Position).
// Position is a 0-1 multiplier run by LinearGo.
_target.width = super.correctValue( _startWidth + _changeWidth * _position ); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -