topical media & game development
graphic-shader-rays.mx
graphic-shader-rays.mx
(swf
)
[ flash
]
flex
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:ae="*"
layout="absolute"
backgroundColor="#000000"
applicationComplete="complete()">
<mx:Script>
<![CDATA[
import flash.filters.*;
import flash.utils.ByteArray;
import flash.utils.getTimer;
//[SWF(width="512",height="512",frameRate="60",backgroundColor="#000000")]
//the file that contains the binary bytes of the PixelBender filter
[Embed("graphic-shader-rays.pbj", mimeType="application/octet-stream")]
private var CustomFilter:Class;
private function click ( event:MouseEvent ):void
{
myLabel.text = "hello world";
}
camera -- as usual
import flash.media.Camera;
private var camera:Camera; // = Camera.getCamera();
private var cameraId:String = "";
private var cameraNo:Number = 0;
private function incno() : void {
setid(cameraNo+1);
}
private function decno() : void {
setid(cameraNo-1);
}
private function setid(n:Number = 0) : void {
cameraId = "0";
cameraNo = n;
if (n == 1) cameraId = "0";
else if (n == 2) cameraId = "1";
else if (n == 3) cameraId = "2";
else if (n == 4) cameraId = "3";
else if (n == 5) cameraId = "4";
else if (n == 6) cameraId = "5";
else if (n == 7) cameraId = "6";
else if (n == 8) cameraId = "7";
else if (n == 9) cameraId = "8";
cameralabel.label = "" + n;
}
private function attach() : void {
stack.selectedIndex = 2; // activate before attach
camera = Camera.getCamera(cameraId);
ca.attachCamera(camera);
//stack.selectedIndex = state; // delay until ready
}
next / display(s)
private var state:Number = 0;
private var max:Number = 4;
private function next():void {
state+=1;
if (state >= max) state = 0;
stack.selectedIndex = state;
//if (state == 2) attach();
}
loop / effect(s)
private function loop(e : Event) : void {
// shader.data.size.value = [ 10 + Math.random()*20 ];
// if (state == 3) shader.data.size.value = [ 0 + Math.random()*5 ];
stack.filters = [filter];
}
private var shader:Shader;
private var filter:ShaderFilter;
on completion
private function complete():void
{
//Pass the loaded filter to the Shader as a ByteArray
shader = new Shader(new CustomFilter() as ByteArray);
// shader.data.size.value = [20.0];
filter = new ShaderFilter(shader);
//add the filter to the image
stack.filters = [filter];
stage.addEventListener(Event.ENTER_FRAME, loop);
}
]]>
</mx:Script>
component(s)
<ae:component_screen id="display"/>
<mx:ViewStack id="stack" width="100%" height="100%">
<mx:Canvas>
<mx:Image id="im" click="next();" right="0" left="0" top="0" bottom="0" maintainAspectRatio="false" source="@Embed(source='soutine.jpg')"/>
</mx:Canvas>
<mx:Canvas>
<mx:Image id="vd" click="next();" right="0" left="0" top="0" bottom="0" maintainAspectRatio="false" source="@walk.png"/>
</mx:Canvas><mx:Canvas>
<mx:VideoDisplay id="ca" click="next();" right="0" left="0" top="0" bottom="0" maintainAspectRatio="false" source="../assets/clips/tube/balloon.flv"/>
</mx:Canvas>
<mx:Panel title="hello world" horizontalAlign="center"
paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10">
<mx:Label id="myLabel" width="180" fontWeight="bold" fontSize="24"/>
<mx:Button id="myButton" label="click me!" click="click(event);" />
</mx:Panel>
</mx:ViewStack>
<mx:HBox top="5" right="3">
<mx:VBox>
<mx:Button id="cameralabel" color="gray" borderColor="0" fillAlphas="[0, 0]" label="camera" click="attach();"/>
<mx:Button color="gray" label="+" click="incno();"/>
<mx:Button color="gray" label="-" click="decno();"/>
</mx:VBox>
<mx:Label id="cameralabel" color="white" text="@" click="attach();"/>
</mx:HBox>
<mx:HBox left="5" bottom="10">
<mx:Button color="gray" borderColor="0" fillAlphas="[0, 0]" label="next" click="next();"/>
</mx:HBox>
<mx:HBox right="5" bottom="10">
<mx:Button color="gray" borderColor="0" fillAlphas="[0, 0]" label="stop" click="ca.stop();"/>
<mx:Button color="gray" borderColor="0" fillAlphas="[0, 0]" label="play" click="ca.play();"/>
<mx:Button color="gray" borderColor="0" fillAlphas="[0, 0]" label="fullscreen" click="display.toggle();"/>
</mx:HBox>
</mx:Application>
(C) Æliens
20/2/2008
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.
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2780434-1";
urchinTracker();
</script>