Chapter 37 Example 12

by actionscriptbible
♥2 | Line 59 | Modified 2010-02-09 16:32:31 | MIT License
play

ActionScript3 source code

/**
 * Copyright actionscriptbible ( http://wonderfl.net/user/actionscriptbible )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/nX9H
 */

package {
  import flash.display.Sprite;
  import flash.filters.ConvolutionFilter;

  public class ch37ex12 extends Sprite {
    function ch37ex12() {
      var a:TestImage = new TestImage(0.5, 0, 0);
      var b:TestImage = new TestImage(0.5, 250, 0);
      var c:TestImage = new TestImage(0.5, 0, 167);
      var d:TestImage = new TestImage(0.5, 250, 167);
      addChild(a);
      addChild(b);
      addChild(c);
      addChild(d);
      var aMat:Array = [0,  1, 0,
                        1, -4, 1,
                        0,  1, 0]; //edge detect
      a.filters = [new ConvolutionFilter(3, 3, aMat)];
      var bMat:Array = [ 0, -1,  0,
                        -1,  5, -1,
                         0, -1,  0]; //sharpen
      b.filters = [new ConvolutionFilter(3, 3, bMat)];
      var cMat:Array = [1, 1, 1,
                        1, 1, 1,
                        1, 1, 1]; //blur
      c.filters = [new ConvolutionFilter(3, 3, cMat, 9)];
      var dMat:Array = [-2, -1, 0,
                        -1,  1, 1,
                         0,  1, 2]; //emboss
      d.filters = [new ConvolutionFilter(3, 3, dMat)];
                        
    }
  }
}
import flash.display.Loader;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.events.MouseEvent;
import flash.geom.Point;
class TestImage extends Loader {
  protected var scale:Number;
  protected var origin:Point;
  public function TestImage(scale:Number = 1, x:Number = 0, y:Number = 0) {
    //photo   (CC-BY) Roger Braunstein
    //source  http://www.flickr.com/photos/rogerimp/2940373537/
    var url:String = "http://actionscriptbible.com/files/heiwadoori.jpg";
    load(new URLRequest(url), new LoaderContext(true));
    this.scale = scale;
    this.origin = new Point(x, y);
    addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
    addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
    onMouseUp(null);
  }
  protected function onMouseDown(event:MouseEvent):void {
    parent.setChildIndex(this, parent.numChildren-1);
    scaleX = scaleY = 1;
    x = y = 0;
  }
  protected function onMouseUp(event:MouseEvent):void {
    scaleX = scaleY = scale;
    x = origin.x; y = origin.y;
  }
}