/**
* @date 21/11/2008
* @author borealkiss
* @link http://blog.boreal-kiss.com/
*/packagecom.borealkiss.controls{importflash.display.DisplayObjectContainer;
importflash.errors.IllegalOperationError;
/**
* Abstract class
*/publicclassViewController{protectedvar_target:DisplayObjectContainer;
/**
* Constructor
*/publicfunctionViewController(target:DisplayObjectContainer){_target=target;
if(Object(this)==ViewController){thrownewIllegalOperationError("Abstract class must be inherited in a subclass");
}}publicfunctiondraw():void{//Must be overridden in a subclass.
}}}
/**
* @date 27/11/2008
* @author borealkiss
* @link http://blog.boreal-kiss.com/
*/packagecom.borealkiss.display{importflash.display.DisplayObjectContainer;
importflash.display.Sprite;
importflash.display.Bitmap;
importflash.display.BitmapData;
importflash.display.Graphics;
importflash.geom.Matrix;
publicclassPextendsSprite{protectedvar_target:DisplayObjectContainer;
protectedvar_size:Number;
protectedvar_xPos:Number;
protectedvar_yPos:Number;
/**
* Constructor
*
* @param target The parent object.
* @param size Size of the the parent object.
* @param xPos x-position of this object on the parent coordinates (i.e., this.x).
* @param yPos y-position of this object on the parent coordinates (i.e., this.y).
*/publicfunctionP(target:DisplayObjectContainer,size:Number,xPos:Number,yPos:Number){_target=target;
_size=size;
_xPos=xPos;
_yPos=yPos;
this.draw();
}protectedfunctiondraw():void{this.addChild(this.outerShape());
varbitmap:Bitmap=newBitmap(this.backgroundBitmapData());
this.addChild(bitmap);
varmask:Sprite=this.innerShape();
this.addChild(mask);
bitmap.mask=mask;
}//Outer shape of P
protectedfunctionouterShape():Sprite{varsprite:Sprite=newSprite();
varg:Graphics=sprite.graphics;
g.beginFill(0xFFFFFF);
g.drawRoundRectComplex(0,0,_size*0.35,_size*0.45,0,_size*0.1,0,_size*0.1);
g.endFill();
g.beginFill(0xFFFFFF);
g.drawRect(0,0,_size*0.08,_size*0.7);
g.endFill();
returnsprite;
}//Inner shape of P
protectedfunctioninnerShape():Sprite{varsprite:Sprite=newSprite();
varg:Graphics=sprite.graphics;
g.beginFill(0x00FFFF,0.5);
g.drawRoundRectComplex(_size*0.08,_size*0.08,
_size*0.2,_size*0.3,0,_size*0.05,0,_size*0.05);
g.endFill();
returnsprite;
}//Draw the target image at the back of the inner shape of P.
//_xPos and _yPos will be exactly the same as this.x and this.y, respectively.
//However these values must be assigned when the constructor is callsed.
protectedfunctionbackgroundBitmapData():BitmapData{varoffsetX:Number=_xPos;
varoffsetY:Number=_yPos;
varmatrix:Matrix=newMatrix();
matrix.translate(-offsetX,-offsetY);
varbitmapData:BitmapData=newBitmapData(_size,_size,true,0x0);
bitmapData.draw(_target,matrix);
returnbitmapData;
}}}