CircleTransition ?
♥0 |
Line 97 |
Modified 2009-06-25 02:39:42 |
MIT License
archived:2017-03-09 21:42:39
ActionScript3 source code
/**
* Copyright zahir ( http://wonderfl.net/user/zahir )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/qHTA
*/
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
width="465" height="465" backgroundColor="0xFFFFFF"
creationComplete="init()" >
<mx:Script>
<![CDATA[
import mx.utils.Base64Decoder;
private var s:Shader;
private var d:ShaderData;
private var f:FileReference;
private var layer:String = "fore";
private var foreLay:BitmapData;
private var backLay:BitmapData;
private var res:BitmapData;
private var flg:Boolean = false;
private function init():void{
s = getCircleTransition();
d = s.data;
res = new BitmapData( 425, 345 );
img.source = new Bitmap( res );
}
private function getCircleTransition():Shader{
var dec:Base64Decoder = new Base64Decoder();
dec.decode( "pQEAAACkEABDaXJjbGVUcmFuc2l0aW9uoAxuYW1lc3BhY2UAemFoaXIxOTI5AKAMdmVuZG9yAHphaGlyAKAIdmVyc2lvbgABAKAMZGVzY3JpcHRpb24AeW91ciBkZXNjcmlwdGlvbgChAQIAAAxfT3V0Q29vcmQAowAEZm9yZQCjAQRiYWNrAKECBAEAD2RzdAChAQIAAANjZW50ZXIAogJtYXhWYWx1ZQBFegAARXoAAKICbWluVmFsdWUAxXoAAMV6AACiAmRlZmF1bHRWYWx1ZQBDgAAAQ4AAAKEBAQIACHJvdGF0ZQCiAW1heFZhbHVlAEO0AACiAW1pblZhbHVlAMO0AACiAWRlZmF1bHRWYWx1ZQAAAAAAogxkZXNjcmlwdGlvbgBzdGFydCBhbmdsZQChAQgBgAhyZWZsZWN0aW9uAKIIbWF4VmFsdWUAAQCiCG1pblZhbHVlAAAAoghkZWZhdWx0VmFsdWUAAQChAQECAAR0aW1lAKIBbWF4VmFsdWUAP4AAAKIBbWluVmFsdWUAAAAAAKIBZGVmYXVsdFZhbHVlAAAAAAAdAgAxAAAQAB0DAMECALAAAgMAwQAAsAAdAwAxAwAQADIDAIA/gAAAMgGAQAEAAAAoAYCAAYBAAB0BgCAAgAAANAAAAAGAgAAyAwBAv4AAAAMDAIADAEAANgAAAAAAAAAdAwBAAwDAAAYDAEADAIAAMgQAgDyO800EBABABAAAAAMEAEADAEAAHQMAQAQAQAABAwBAAgAAAB0EAIADAAAAAwQAgAMAQAAdAwBABAAAADIEAIAAAAAAKgMAQAQAAAAdAYBAAIAAADQAAAABgEAAMgQAgEO0AAABAwBABAAAADYAAAAAAAAAMgQAgEO0AAAdBABAAwBAAAgEAEAEAAAAHQMAQAQAQAAyBACAQ7QAAB0EAEAEAAAAAwQAQAIAQAAdBACABABAACsDAEAEAAAAHQGAQACAAAA0AAAAAYBAADAFAPECALABHQEA8wUAGwA1AAAAAAAAADAFAPECALAAHQEA8wUAGwA2AAAAAAAAAA==" );
return new Shader( dec.toByteArray() );
}
private function load( _layer:String ):void{
layer = _layer;
f = new FileReference();
f.addEventListener(Event.SELECT, onSelect);
f.browse( [ new FileFilter("Image File (*.jpg, *.png)", "*.jpg; *.png") ] );
}
private function onSelect(e:Event):void{
f.removeEventListener(Event.SELECT, onSelect);
f.addEventListener(Event.COMPLETE, onComp);
f.load();
}
private function onComp(e:Event):void{
f.removeEventListener(Event.COMPLETE, onComp);
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{
if(l.width > l.height){
if(l.width > 425){
l.width = 425;
l.scaleY = l.scaleX;
}
}else{
if(l.height > 345){
l.height = 345;
l.scaleX = l.scaleY;
}
}
var m:Matrix = new Matrix();
m.scale(l.scaleX, l.scaleY);
if(layer == "fore"){
foreLay = new BitmapData(l.width, l.height, false);
foreLay.draw( l, m );
d.fore.input = foreLay;
d.fore.width = l.width;
d.fore.height = l.height;
}else{
backLay = new BitmapData(l.width, l.height, false);
backLay.draw( l, m );
d.back.input = backLay;
d.back.width = l.width;
d.back.height = l.height;
}
if(foreLay != null && backLay != null){
flg = true;
onChange();
}
});
l.loadBytes( f.data );
}
private function onChange():void{
d.center.value = [cx.value, 345 - cy.value];
d.reflection.value = [ ref.selected ? 1 : 0 ];
d.rotate.value = [ rotate.value ];
d.time.value = [ time.value ];
if(flg){
var sj:ShaderJob = new ShaderJob( s, res, 425, 345);
sj.start( true );
}
}
]]>
</mx:Script>
<mx:Image id="img" left="20" right="20" top="20" bottom="100" />
<mx:HSlider change="onChange()" x="305" y="0" left="20" right="20" top="10" id="cx" maximum="425" minimum="0" value="212.5"/>
<mx:VSlider change="onChange()" left="10" top="20" bottom="100" id="cy" maximum="345" minimum="0" value="172.5"/>
<mx:CheckBox change="onChange()" label="ベクトル反転" id="ref" left="20" bottom="70"/>
<mx:HSlider change="onChange()" right="20" bottom="75" left="190" value="0" maximum="360" minimum="-360" id="rotate"/>
<mx:Label text="初期回転角度:" bottom="72" left="120"/>
<mx:HSlider change="onChange()" left="80" right="20" bottom="50" value="0" maximum="1" minimum="0" id="time"/>
<mx:Label x="20" y="400" text="進行度合い:"/>
<mx:Button label="back image" bottom="15" right="20" click="load('back')"/>
<mx:Button label="fore image" bottom="15" right="120" click="load('fore')"/>
</mx:Application>