forked from: [質問です]LoaderをBitmapにする方法について
forked from [質問です]LoaderをBitmapにする方法について (diff: 35)
Loaderで読み込んだ画像をBitmapにする方法がわかりません? いろんな方のサイトを拝見して、同じコードを書いたのですが、表示されませんでした。 最終的にはドットが集まって、画像を描くというのを作りたいと思っています。 初歩的な質問で申し訳ありませんが、よろしくお願いします。 そもそも、geocities.jp内のファイルを外部からアクセスしようとすると、 キャッシュがない場合、表示されません。リロードすれば表示されますが。 なので、geocities.jp上のファイルを読み込むのは、できないと考えた方が良いでしょう。 そこで、別の外部サーバ(www.project-nya.jp)から画像の読み込みを行いますが、 この場合、読み込んだ画像(Bitmap)のプロパティ等にアクセスしようとすると、 セキュリティサンドボックス侵害エラーが発生するので、 crossdomain.xmlを外部サーバに設置する必要があります。
ActionScript3 source code
/**
* Copyright ProjectNya ( http://wonderfl.net/user/ProjectNya )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/iVYj
*/
// forked from Tamanegi_kenshi's [質問です]LoaderをBitmapにする方法について
//Loaderで読み込んだ画像をBitmapにする方法がわかりません?
//いろんな方のサイトを拝見して、同じコードを書いたのですが、表示されませんでした。
//最終的にはドットが集まって、画像を描くというのを作りたいと思っています。
//初歩的な質問で申し訳ありませんが、よろしくお願いします。
/*
そもそも、geocities.jp内のファイルを外部からアクセスしようとすると、
キャッシュがない場合、表示されません。リロードすれば表示されますが。
なので、geocities.jp上のファイルを読み込むのは、できないと考えた方が良いでしょう。
そこで、別の外部サーバ(www.project-nya.jp)から画像の読み込みを行いますが、
この場合、読み込んだ画像(Bitmap)のプロパティ等にアクセスしようとすると、
セキュリティサンドボックス侵害エラーが発生するので、
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://www.project-nya.jp/images/flash/piyo.png";
public function FlashTest() {
init();
}//FrashTest
private function init():void{
Security.allowDomain("www.project-nya.jp");
Security.loadPolicyFile("http://www.project-nya.jp/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