AS3

Adobe jpegEncoderを(今更ながら)使ってみる

2009.10.25追記

An asynchronous, vector optimized JPEG encoderという、Flash Player10に最適化したJPEGエンコーダを使えば、処理が約5倍も早いです。300×400とか、小さい画像を作るなら問題ありませんが、大きい画像を扱う場合は大変便利です!! さらに、時間がかかるというか、基本のJPEGEncoderはブラウザが固まってるので、その間に時計マークを出したりすることすらできないという気持ち悪さがあります。ぜひ、vector optimizedを使いましょう(Flash Player9必須ならしょうがないけど)。

Google code にAS3coreLibというプロジェクトがあって、その中にadobeのjpegエンコーダーとPNGエンコーダーがあります。Flash内の一部またはすべてをbyteArrayとして画像にできるものです。これを使い、byteArrayを画像として書き出すPHPなどで画像ファイルを作成し、ダウンロードまたはサーバに保存すれば、お絵かきサイトみたいなのがカンタンに作れるという寸法です。

AS3でNow loading…なローディング(フレームアクション)

AS3で読み込みを作るとき、LoaderInfoのProgressEventで書こうが、Event.ENTER_FRAMEで書こうが、なぜか100%になったときしか処理が動かなくて、途中の読み込み状況がまったく出ません。なんでだよ。

stop();
var loadInfo:LoaderInfo = this.loaderInfo;
loadInfo.addEventListener(ProgressEvent.PROGRESS, nowloading);
loadInfo.addEventListener(Event.COMPLETE, onloaded);
function nowloading(event:ProgressEvent):void{
var per:uint = Math.floor(event.target.bytesLoaded / event.target.bytesTotal * 100);
trace(per);
};
function onloaded(event:Event):void {
trace("complete");
};
stop();
this.addEventListener(Event.ENTER_FRAME, checkBytes);
function checkBytes(e:Event){
var per = this.loaderInfo.bytesLoaded / this.loaderInfo.bytesTotal * 100;
if (per >= 100) {
complete();
}
trace(per)
}
function complete() {
this.removeEventListener(Event.ENTER_FRAME, checkBytes);
trace("complete")
}

出力結果

comp
100

AS3のコンボボックスで内容を動的に作る

Flash CS3での使用を想定しています。
コンボボックスのアイテムを動的に作る方法です。

このサンプルでは、テキストエリアに文字を入れて「追加」ボタンを押すとコンボボックスに入力されたテキストが追加されます。テキストエリアが空のときは「入力してね」みたいなことを表示します。

k_btn.addEventListener(MouseEvent.CLICK,kclick);
function kclick(e:MouseEvent):void {
if (val_txt.text != "") {
cb1.addItem({label:val_txt.text,data:""});
setumei_txt.text="選択肢:" + val_txt.text + "を追加しました";
val_txt.text="";
}else{
setumei_txt.text ="テキストを入力してください"
}
}
cb1.addItem({label:"入力テキストが選択枝になります",data:""});

要はaddItemなんですが、これはObjectになっているので、labelとdataを入れてあげればいい、ということっすね。

いちおう、サンプルも置いておきます。こちら(CS3 .fla形式)。