Bonsajo Droste 異常に重いですが正常です。 * mouseX : 位相 * mouseY : 曲率 gupon forked:1favorite:18lines:84license : MIT License modified : 2009-11-21 18:36:48 Embed Tweet /* * 異常に重いですが正常です。 * mouseX : 位相 * mouseY : 曲率 */ package{ import flash.display.Loader; import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.ShaderFilter; import flash.net.URLRequest; import flash.utils.ByteArray; import mx.utils.Base64Decoder; import mx.utils.Base64Encoder; public class YouTubeDroste extends Sprite{ private const NUM_VIDEO:int = 5; private const VIDEO_ID:Array = ["pAwR6w2TgxY","3Za-V_lhwGg","F1jmhbw3JHw","Fv80DLlUwNQ","PuZ5tzr11Eo"]; private var shader:Shader; private var filter:ShaderFilter; private var count:int = 0; private var container:Sprite; private var progress:Number = 0; public function YouTubeDroste(){ if ( stage ) init(); else addEventListener( Event.ADDED_TO_STAGE, init); } private function init( event:Event=null ):void{ container = new Sprite(); container.graphics.beginFill(0xFFFFFF); container.graphics.drawRect(0, 0, 800, 800); container.x = (stage.stageWidth - 800) / 2; container.y = (stage.stageHeight - 800 ) / 2; addChild(container); for(var i:int=0;i<NUM_VIDEO;i++){ var loader:Loader = new Loader(); loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3")); loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit); container.addChild(loader); } applyFilter(); stage.addEventListener( MouseEvent.MOUSE_MOVE, changeFilter ); addEventListener( Event.ENTER_FRAME, enterFrame ); } private function enterFrame(event:Event):void{ progress -= 10; shader.data.rotate.value = [-progress/120]; shader.data.offsetX.value = [progress]; filters = [filter]; } private function changeFilter(event:MouseEvent=null):void{ shader.data.phaseShift.value = [mouseX/2-600]; shader.data.test.value = [ 500 + mouseY*10 ]; } private function applyFilter():void{ var s:String = "hVHBbtNAEH1eb2y3CmoO3KpKFl9AuSOspkVwoUiVELdiJRvVKLEjr1tQT/4QDmmAe+9cGpVj+QJ+" + "AsStJ2bGmyYuBypZrzPz5s17m68egC8beGU+PM/GlSln3TydGDtNBwZ7RW7T98VxPrGYdc9MPizK" + "ZROz6MyUNityeDQcGjsos2nF9SHBJDs3w3i/LGxl4oPRyAwqXHgK6B4fnlb9oiiH+AxtywEulPaw" + "NbSO4FtaxVxN0o9v0vGpwf4LyEetLG9az2rIN1dDM0pPx1WbSToK3cE4mx7d0+rfQr7/a/VjYO8X" + "a5EpdV4UE8y9O51kBi6XGk9vbn7MvdY+S8quNz1JrTk6yUbVuoK4WClc34ptH91pYfsmp1+i5ZtS" + "9dtvcE3ltYT1fKhiNLKmert+Qd5sdYH/hOuVRZVWphXn5dbPf6kaUWVsy/XBt3pdswnRyn3wKcET" + "jSQhDa2xq/EaPiFwiZ0OFppRIwV6UIQdQuoT7x08Qp9r6QuvB9TM6ylcMS/WjFInCAg7NKd+b9nX" + "VAeC5CNAzdF2AiQ89wgD8sU8+heUsOfzHvFW+wn7FWz2avgOqY6dTsz7jY70RZd57IfuxnxXB83c" + "D5p71G/exe37glduv8ZDp7++p9mv4zFfNfdk/oDqDu+HqLnurmrRI9wN+T0j1CHXEZKQ5uyPf2NF" + "yDX146CZ94S3AR3xXdFNnJ7wFqIXYkFUPArxfYPzRHxnBj9y92R+KTmVy0kS2F7eoTpq8sXK3Q9J" + "x7s353f2G1/SjyL2LbnqyPFYN3J37nI7vSZPgseb+M1+djz82cQ2/gI="; var d:Base64Decoder = new Base64Decoder(); d.decode(s); var ba:ByteArray = d.drain(); ba.inflate(); shader = new Shader(ba); filter = new ShaderFilter(shader); filters = [filter]; } private function onLoaderInit(event:Event):void{ var player:Object = event.target; player = event.target.content; player.addEventListener("onReady", playerReady); } private function playerReady(event:Event):void{ var player:Object = event.target; player.setSize(160, 120); player.x = count * 160; player.loadVideoById(VIDEO_ID[count]); count++; } } } Code Fullscreen Preview Fullscreen titou bradsedito XZ9cp9 gretel Ctrl ep91ckok dizgid llcheesell ngtn selflash kamihiro miniapp Nyarineko muzic : youtube3D Youtubeな管 soundkitchen.. : 1日1Wonderflうずまきぐるんぐるん sw_lucchini : 電子ドラッグ _maki : 1日1Wonderfl psyark : 1日1Wonderfl 1日1Wonderfl youtube うずまき ぐるんぐるん shader ShaderFilter stage filter target MouseEvent.ADDED_TO_STAGE Object URLRequest addEventListener addChild Array Sprite Number int sort new page view favorite forked pv516 kyaryyyyyyy Droste gupon forked:0 favorite:0lines:110 (diff:45)