forked from: ローカルでは表示できるのにwonderflでは表示されません
クロスドメインの設定を無視するバグ技
* (http://wonderfl.net/code/5c164cb968b9883d1eee01b236c5206956e57545)
* を使うと表示されるので、設定がどこか間違っているのだと思われます。
* 多分、↓が原因ではないでしょうか?
*
* メタポリシーを使った Flash Player セキュリティ管理
* http://blogs.adobe.com/akamijo/archives/2008/03/_flash_player.html
/**
* 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));
}
}
//}