In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: ローカルでは表示できるのにwonderflでは表示されません

クロスドメインの設定を無視するバグ技
* (http://wonderfl.net/code/5c164cb968b9883d1eee01b236c5206956e57545)
* を使うと表示されるので、設定がどこか間違っているのだと思われます。
* 多分、↓が原因ではないでしょうか?
*
* メタポリシーを使った Flash Player セキュリティ管理
* http://blogs.adobe.com/akamijo/archives/2008/03/_flash_player.html
Get Adobe Flash player
by o8que 12 Mar 2010
    Embed
/**
 * Copyright o8que ( http://wonderfl.net/user/o8que )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/aqjI
 */

// forked from dotton's ローカルでは表示できるのにwonderflでは表示されません
/*
 * クロスドメインの設定を無視するバグ技
 * (http://wonderfl.net/code/5c164cb968b9883d1eee01b236c5206956e57545)
 * を使うと表示されるので、設定がどこか間違っているのだと思われます。
 * 多分、↓が原因ではないでしょうか?
 *
 * メタポリシーを使った Flash Player セキュリティ管理
 * http://blogs.adobe.com/akamijo/archives/2008/03/_flash_player.html
 */
package {
	
	/*
	初心者です。
	ジニーエフェクト的なものを目指して作成しました。
	左上のボタンを押すと、画像がy軸方向へ進むにつれて収縮していくエフェクトですが、
	ローカルでは表示されてもwonderfl上では再生されません。
	原因がよくわからないので御教授願います。
	
	*/
	
	import flash.display.Graphics;
    import flash.display.Sprite;

	import flash.events.Event;
	import flash.events.MouseEvent;
    
    [SWF(width="500", height="500", backgroundColor="0xFFFFFF", frameRate="30")]
    import flash.display.Bitmap;
    import flash.net.URLRequest;
 	import flash.net.URLLoader;
	import flash.display.Loader;
    import flash.text.TextField;
    import flash.text.TextFieldType;
	import flash.system.Security;
    import flash.display.BitmapData;
    import flash.geom.Matrix;
	import flash.geom.ColorTransform;
	import flash.display.BlendMode;
	import flash.display.Graphics;
	import flash.display.Shape;
    
    import flash.display.Shape;
    	
    	
    import flash.system.LoaderContext;
    public class test extends Sprite {
   	 	private	var _sp:Sprite = new Sprite();
    		private var _url:String = "http://www.grasp.co.jp/tetsuya/wonderfl/dojira.png";
		private var loader:ExternalImageLoader;
		private var bmp:Bitmap = new Bitmap();
    		private var spArr:Array;
    		
        public function test() {
            // write as3 code here..
            Security.loadPolicyFile("http://www.grasp.co.jp/tetsuya/wonderfl/crossdomain.xml");
            
            loader = new ExternalImageLoader();
            loader.load(_url);
			loader.addEventListener(Event.COMPLETE, loadComp);
        }
         
        private function traceTxt(_str:String):void{
    			var traceTxtField:TextField;
            traceTxtField = new TextField();
        		traceTxtField.type = TextFieldType.DYNAMIC;
        		traceTxtField.appendText(_str);
            addChild(traceTxtField);
        }
        private function loadComp(e:Event):void{
			loader.removeEventListener(Event.COMPLETE, loadComp);
			var bitmap:Bitmap = new Bitmap(loader.content);
        		_sp.addChild(bitmap);
        		_sp.x =(stage.stageWidth-bitmap.width)/2;
        		_sp.y =(stage.stageHeight-bitmap.height)/2;
        		//addChild(_sp);
        		getBitmap();
        		
        }
        
        private function getBitmap():void{
        	
			//オリジナルのビットマップ
        	
        		spArr = new Array();
			var btn_sp:Sprite = new Sprite();
			var gr:Graphics = btn_sp.graphics;
			gr.beginFill(0xFF00FF);
			gr.drawRect(10,10,50,50)
			gr.endFill();
			addChild(btn_sp);
			btn_sp.buttonMode =true;
			
			var color : ColorTransform = new ColorTransform(1,1,1,1,0,0,0,0);
        		for(var i:int = 0; i<stage.stageHeight; ++i){
        			var bmd:BitmapData = new BitmapData(stage.stageWidth, 1, true)
				var bm:Bitmap = new Bitmap(bmd);
				var temp_sp:Sprite = new Sprite();
				temp_sp.addChild(bm);
				spArr.push(temp_sp);
				var matrix : Matrix = new Matrix();
				matrix.translate(0, -i);
				bmd.draw(_sp, matrix, color, BlendMode.NORMAL);
				temp_sp.y = i+_sp.y;
				temp_sp.x = _sp.x;
				addChild(temp_sp);
        		}
        		_sp.visible = false;
			_sp.alpha =0.5;
        		
			btn_sp.addEventListener(MouseEvent.CLICK, clickHandler);
        }
        
        private function clickHandler(e:Event):void{
			stage.removeEventListener(Event.ENTER_FRAME, enterHandler);
			for(var i:int=0; i<spArr.length; i++){
				spArr[i].y = -i;
				spArr[i].scaleX = 1;
			}
			addEventListener(Event.ENTER_FRAME, enterHandler);
		}
		private function enterHandler(e:Event):void{
			for(var i:int=0; i<spArr.length; i++){
				spArr[i].y += 10;
				var per:Number = (654-spArr[i].y)/654;
				per = per < 0 ? 0:per;
				spArr[i].scaleX = per*per*3;
			}
		}
    }
}

//package {
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.net.URLRequest;
	import flash.system.LoaderContext;
	
	//public
	class ExternalImageLoader extends EventDispatcher {
		private var _content:BitmapData;
		private var _tmpA:Loader;
		private var _tmpB:Loader;
		
		public function get content():BitmapData { return _content; }
		
		public function ExternalImageLoader() {
			_content = null;
			_tmpA = new Loader();
			_tmpB = new Loader();
			
		}
		
		public function load(url:String):void {
			_tmpA.contentLoaderInfo.addEventListener(Event.INIT, tmpALoaded);
			_tmpA.load(new URLRequest(url), new LoaderContext(true));
		}
		
		private function tmpALoaded(e:Event):void {
			e.target.removeEventListener(Event.INIT, tmpALoaded);
			_content = new BitmapData(int(_tmpA.width), int(_tmpA.height), true, 0x00ffffff);
			_tmpB.contentLoaderInfo.addEventListener(Event.INIT, tmpBLoaded);
			_tmpB.loadBytes(_tmpA.contentLoaderInfo.bytes);
		}
		
		private function tmpBLoaded(e:Event):void {
			e.target.removeEventListener(Event.INIT, tmpBLoaded);
			_content.draw(_tmpB);
			_tmpA.unload();
			_tmpB.unload();
			dispatchEvent(new Event(Event.COMPLETE));
		}
	}
//}