Posted in Adobe, Flash
07/9 2006

AS2 :: TileMaker Class

Came up with this one after a number of posts over @ gotoAndLearn() about making grids from XML files. Since I’m all about reusability, I devised an easy way to create animated thumnail tiles for an XML photo gallery could be an XML video gallery too. Just feed in the required parameters and off you go. Button events could easily be added to the thumbnails also.

import mx.utils.Delegate;
import org.thesourcecode.effects.Animator;
 
class org.thesourcecode.utils.TileMaker
{
	private var _xmlfile:String;
	private var _gridType:String;
	private var _increment:Number;
	private var _i:Number;
	private var _j:Number;
	private var _k:Number;
	private var _numOf:Number;
	private var _colSpacing:Number;
	private var _rowSpacing:Number;
	private var _xOffset:Number;
	private var _yOffset:Number;
	private var _xml:XML;
	private var _ROOT:MovieClip;
	private var _targetClip:MovieClip
	private var _mcl:MovieClipLoader;
	private var _listener:Object;
	private var _obj:Object;
	private var _tween:Boolean;
	private var _tweenType:Function;
 
	public function TileMaker( parent:MovieClip,tween:Boolean )
	{
		_ROOT = parent;
		_obj = new Object;
		_mcl = new MovieClipLoader;
		if (tween)
		{
			var _tweenType = mx.transitions.easing.Elastic.easeInOut;
		} 
		else 
		{
			var _tweenType = mx.transitions.easing.None.easeNone;
		}
	}//end constructor
 
	public function makeTiles( xmlfile:String, 
		targetClip:MovieClip, 
		gridType:String, 
		numOf:Number, 
		rowSpacing:Number, 
		colSpacing:Number, 
		xOffset:Number, 
		yOffset:Number ):Void
	{
		_xmlfile = xmlfile;
		_targetClip = targetClip;
		_gridType = gridType;
		_numOf = numOf;
		_rowSpacing = rowSpacing;
		_colSpacing = colSpacing;
		_xOffset = xOffset;
		_yOffset = yOffset;
		_xml = new XML();
		_xml.ignoreWhite = true;
		_xml.onLoad = Delegate.create( this,_makeGrid );
		_xml.load( _xmlfile );
	}
 
	private function _makeGrid()
	{
		var nodes:Array = _xml.firstChild.childNodes;
		_listener = new Object();
		_mcl.addListener( _listener );
		for (_i=0, _j=1, _k=-1; _k < nodes .length; _i++, _j++, _k++)
		{
			var contents:String = nodes[ _k ].attributes.thumb;
			var row = (_i-1) % _numOf;
			var col = Math.floor( (_i-1) / _numOf );
			var tmp:MovieClip = _targetClip.createEmptyMovieClip( "box"+_j,_targetClip.getNextHighestDepth() );
			tmp._x = -100;
			tmp._y = -100;
			_mcl.loadClip( contents,tmp );
			_listener.onLoadInit = function( tmp )
			{
				if (tmp._width > 100 && tmp._height > 100)
				{
					tmp._xscale = 50;
					tmp._yscale = 50;
				}
			}
			if (_gridType == "row")
			{
				_obj.X = ( row*_rowSpacing ) + _yOffset;
				_obj.Y = ( col*_colSpacing ) + _xOffset;
			} 
			else 
			{
				_obj.Y = ( row*_rowSpacing ) + _yOffset;
				_obj.X = ( col*_colSpacing ) + _xOffset;
			}
			Animator.animate( tmp, _obj.X, _obj.Y, _tweenType );
		}
	}
}//end class

You can download an easy-install extension plus sample files here.
Documentation can be found here.

This Post tags: ,

 

USER COMMENTS

Track comments via RSS 2.0 feed. Feel free to post the comment, or trackback from your web site.

Currently there are no comments related to article "AS2 :: TileMaker Class".

Get Adobe Flash playerPlugin by wpburn.com wordpress themes