forked from: [質問です]LoaderをBitmapにする方法について
Loaderで読み込んだ画像をBitmapにする方法がわかりません?
いろんな方のサイトを拝見して、同じコードを書いたのですが、表示されませんでした。
最終的にはドットが集まって、画像を描くというのを作りたいと思っています。
初歩的な質問で申し訳ありませんが、よろしくお願いします。
そもそも、geocities.jp内のファイルを外部からアクセスしようとすると、
キャッシュがない場合、表示されません。リロードすれば表示されますが。
なので、geocities.jp上のファイルを読み込むのは、できないと考えた方が良いでしょう。
そこで、wonderfl.netのタイトルedit画面内にある画像upload機能を使って、
まず、画像をアップロードし、その画像の読み込みを行います。
しかし、この画像がアップロードされたサーバはassets.wonderfl.netで、
wonderfl.net, swf.wonderfl.net とは別サーバとみなされるので、
読み込んだ画像(Bitmap)のプロパティ等にアクセスしようとすると、
セキュリティサンドボックス侵害エラーが発生します。
なので、assets.wonderfl.netのcrossdomain.xmlを読み込む必要があります。
/**
* Copyright ProjectNya ( http://wonderfl.net/user/ProjectNya )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/sz0e
*/
// forked from Tamanegi_kenshi's [質問です]LoaderをBitmapにする方法について
//Loaderで読み込んだ画像をBitmapにする方法がわかりません?
//いろんな方のサイトを拝見して、同じコードを書いたのですが、表示されませんでした。
//最終的にはドットが集まって、画像を描くというのを作りたいと思っています。
//初歩的な質問で申し訳ありませんが、よろしくお願いします。
/*
そもそも、geocities.jp内のファイルを外部からアクセスしようとすると、
キャッシュがない場合、表示されません。リロードすれば表示されますが。
なので、geocities.jp上のファイルを読み込むのは、できないと考えた方が良いでしょう。
そこで、wonderfl.netのタイトルedit画面内にある画像upload機能を使って、
まず、画像をアップロードし、その画像の読み込みを行います。
しかし、この画像がアップロードされたサーバはassets.wonderfl.netで、
wonderfl.net, swf.wonderfl.net とは別サーバとみなされるので、
読み込んだ画像(Bitmap)のプロパティ等にアクセスしようとすると、
セキュリティサンドボックス侵害エラーが発生します。
なので、assets.wonderfl.netのcrossdomain.xmlを読み込む必要があります。
*/
package {
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.PixelSnapping;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
//
import flash.system.Security;
public class FlashTest extends Sprite {
private var file:String = "http://assets.wonderfl.net/images/related_images/d/d4/d4a5/d4a53f43b7514733c085eec1f3c775c111e5e991";
public function FlashTest() {
init();
}//FrashTest
private function init():void{
Security.allowDomain("assets.wonderfl.net");
Security.loadPolicyFile("http://assets.wonderfl.net/crossdomain.xml");
//
var my_load:Loader=new Loader();
var my_url:URLRequest=new URLRequest(file);
my_load.load(my_url);
my_load.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
}
//ロードが終了後のイベント
private function onComplete(event:Event):void{
var content:Bitmap = event.target.content;
var my_bmd:BitmapData=new BitmapData(content.width, content.height);
my_bmd.draw(content);
var my_bm:Bitmap = new Bitmap(my_bmd);
addChild(my_bm);
}//onComplete
}//class
}//package