‘ActionScript2’ カテゴリーのアーカイブ

MovieClip*5000 vs setPixel*5000

2007 年 12 月 15 日 土曜日

bmp_vs_mc.jpg

結果は予想していたが実験。

1. MovieClipを5000個つくり、ランダムに配置。中心に移動。

2. 5000個のランダムな座標を配列で記憶し、それぞれが中心へ移動する通過点を
 求める。毎フレーム、bitmapDataのカンバス上にsetPixelで描画。

2の方が負荷が軽い。
マシンによっては3000個くらいまでならフレームレートを維持できるかも。
5000個になると1はMovieClipを作るだけで大変。
何でもMC主体ではなく、グラプロの思考を持とう。

- flaファイル
bmp_vs_mc.zip

getPixel32

2007 年 12 月 12 日 水曜日

ビットマップデータは乗算済みカラー値として保存される。
getPixel32 はその乗算済みの値を、getPixel は乗算されていない値を返す。

getPixel32 (BitmapData.getPixel32 メソッド)

戻り値

Number - ARGB ピクセル値を表す数値。(x , y ) 座標がイメージの境界外である場合は、0 を返します。ビットマップが、透明ではなく不透明として作成された場合、このメソッドはエラーコード -1 を返します。

getPixel (BitmapData.getPixel メソッド)

BitmapData オブジェクトの特定ポイント (x , y ) の RGB ピクセル値を表す整数を返します。getPixel() メソッドは、乗算されていないピクセル値を返します。アルファ情報は返しません。

BitmapData オブジェクト内のピクセルはすべて、乗算済みカラー値として保存されます。乗算済みイメージピクセルは、アルファデータが既に乗算された赤、緑、青の各カラーチャンネル値を保持します。たとえば、アルファ値が 0 の場合、乗算されていない値に関わらず、RGB チャンネルの値も 0 になります。

このようにデータが失われると、処理の実行時に問題が生じることがあります。Flash Player のメソッドはすべて、乗算されていない値を受け取ったり返したりします。ピクセルの内部表現は、値として返される前、乗算されていません。設定処理の際は、ピクセル値が事前に乗算されてから、生のイメージピクセルが設定されます。

- 参考サイト
3895.setPixel32で設定した値をgetPixel32で取得できない FLASH-JP.COM - フォーラム

trace(this) //結果: クラス名

2007 年 12 月 9 日 日曜日

trace(this); で [Object Object] 以外の出力を得たい時は
toStringメソッドをオーバーライドすれば良い。

/* ActionScript2 */

class Init{

public function Init(mc:MovieClip){
trace(this); //結果: Init
}

public function toString():String {
return "Init"
}
}

AS3では心配なし。

/* ActionScript3 */

package{
class Init{
public function Init(mc:MovieClip){
trace(this); //結果: [object Init]
}
}
}

return “[object Init]” と書いておけば気持ちだけはAS3。

- 参考サイト
toString (Object.toString メソッド)

instanceof

2007 年 12 月 8 日 土曜日

今まで意識して使ったことがなかったが
どこかで役立つかも。

instanceof 演算子

instanceof 演算子

object instanceof classConstructor

object が classConstructor のインスタンスまたは classConstructor のサブクラスであるかどうかをテストします。instanceof 演算子は、プリミティブタイプをラッパーオブジェクトに変換しません。たとえば、次のコードは true を返します。

new String(”Hello”) instanceof String;

一方、次のコードは false を返します。

“Hello” instanceof String;

Tweener.addTween(this, {_param:0, time:1});

2007 年 12 月 5 日 水曜日

TweenerでaddTweenするオブジェクト指定で this が使えた。
3次元の座標を持ったクラスで移動や回転の処理する時などに便利。
今まで同じことするのに3倍くらい無駄な書き方してた。

/* ActionScript2 */

var _param:Number = 20;
Tweener.addTween(this, {_param:0, time:1, onUpdate:function():Void{trace(this._param);}});

/*結果:
12.2186291796976
9.64902265253771
7.6720602823465
(省略)
0.010466552509385
0.00423725405545383
0 */