topical media & game development
actionscript-lib-imageviewer-take2-ImageViewer.ax
actionscript-lib-imageviewer-take2-ImageViewer.ax
[swf]
flex
package {
import flash.display.*;
import flash.net.URLRequest;
import flash.geom.Rectangle;
public class @ax-actionscript-lib-imageviewer-take2-ImageViewer extends Sprite {
// Loader object. Visual asset used to load image.
private var imgLoader:Loader;
// Border shape. Visual asset to be added to display list.
private var border:Shape = null;
// Border style.
private var borderThickness:Number;
private var borderColor:Number;
// Outer dimensions of entire viewer (including border).
private var w:Number;
private var h:Number;
// Constructor
public function @ax-actionscript-lib-imageviewer-take2-ImageViewer (x:Number = 0,
y:Number = 0,
w:Number = 0,
h:Number = 0,
borderThickness:Number = 1,
borderColor:Number = 0) {
this.borderThickness = borderThickness;
this.borderColor = borderColor;
buildViewer();
setPosition(x, y);
setSize(w, h);
}
public function loadImage (URL:String):void {
imgLoader.load(new URLRequest(URL));
}
public function setPosition (x:Number, y:Number):void {
this.x = x;
this.y = y;
// No need to redraw because setting x and y
// automatically causes a screen update.
}
public function setSize (w:Number, h:Number):void {
this.w = w;
this.h = h;
draw();
}
private function buildViewer ():void {
createLoader();
createBorder();
}
private function createLoader ():void {
// Create the Loader instance and make it a child of this object.
imgLoader = new Loader();
addChild(imgLoader);
}
private function createBorder ():void {
// Create the Loader instance and make it a child of this object.
border = new Shape();
addChild(border);
}
private function draw ():void {
// Only clip image and draw border if
// a width and height have been specified.
if (w > 0 && h > 0) {
// Size and position the loader.
imgLoader.scrollRect = new Rectangle(0,
0,
w-borderThickness*2,
h-borderThickness*2);
imgLoader.x = imgLoader.y = borderThickness;
// Draw the border.
var g:Graphics = border.graphics;
g.clear();
g.lineStyle(borderThickness, borderColor);
g.drawRect(borderThickness/2, borderThickness/2,
w-borderThickness, h-borderThickness);
}
}
}
}
(C) Æliens
27/08/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.