13.08.2012 Views

ACTIONSCRIPT 3 Developer’s Guide en

ACTIONSCRIPT 3 Developer’s Guide en

ACTIONSCRIPT 3 Developer’s Guide en

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>ACTIONSCRIPT</strong> 3.0 DEVELOPER’S GUIDE<br />

Working with Pixel B<strong>en</strong>der shaders<br />

package<br />

{<br />

import flash.display.Shader;<br />

import flash.display.Sprite;<br />

import flash.ev<strong>en</strong>ts.Ev<strong>en</strong>t;<br />

import flash.geom.Point;<br />

import flash.net.URLLoader;<br />

import flash.net.URLLoaderDataFormat;<br />

import flash.net.URLRequest;<br />

public class ThreePointGradi<strong>en</strong>t ext<strong>en</strong>ds Sprite<br />

{<br />

private var canvas:Sprite;<br />

private var shader:Shader;<br />

private var loader:URLLoader;<br />

private var topMiddle:Point;<br />

private var bottomLeft:Point;<br />

private var bottomRight:Point;<br />

private var colorAngle:Number = 0.0;<br />

private const d120:Number = 120 / 180 * Math.PI; // 120 degrees in radians<br />

public function ThreePointGradi<strong>en</strong>t()<br />

{<br />

init();<br />

}<br />

private function init():void<br />

{<br />

canvas = new Sprite();<br />

addChild(canvas);<br />

}<br />

var size:int = 400;<br />

topMiddle = new Point(size / 2, 10);<br />

bottomLeft = new Point(0, size - 10);<br />

bottomRight = new Point(size, size - 10);<br />

loader = new URLLoader();<br />

loader.dataFormat = URLLoaderDataFormat.BINARY;<br />

loader.addEv<strong>en</strong>tList<strong>en</strong>er(Ev<strong>en</strong>t.COMPLETE, onLoadComplete);<br />

loader.load(new URLRequest("ThreePointGradi<strong>en</strong>t.pbj"));<br />

private function onLoadComplete(ev<strong>en</strong>t:Ev<strong>en</strong>t):void<br />

{<br />

shader = new Shader(loader.data);<br />

}<br />

shader.data.point1.value = [topMiddle.x, topMiddle.y];<br />

shader.data.point2.value = [bottomLeft.x, bottomLeft.y];<br />

shader.data.point3.value = [bottomRight.x, bottomRight.y];<br />

addEv<strong>en</strong>tList<strong>en</strong>er(Ev<strong>en</strong>t.ENTER_FRAME, updateShaderFill);<br />

private function updateShaderFill(ev<strong>en</strong>t:Ev<strong>en</strong>t):void<br />

Last updated 6/6/2012<br />

312

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!