NetStreamのパス指定

AS2で開発中のメモ

通常flashで外部ファイルを読む時は、swfが埋め込まれているhtmlからの
相対パスなのだが、NetStreamを使ってFLVを再生する際の
flvファイルへのパス指定は、flvをロードするswfからの相対パスだった。

Tweener 特殊プロパティ一覧

caurina.transitions.properties の中にある
6つのasファイルから抜き出した。

それぞれ 〜.init(); が必要。
(例: ColorShortcuts.init();)

AS2, AS3共通
———————————————————————-
■ ColorShortcuts

_color_ra
_color_rb
_color_ga
_color_gb
_color_ba
_color_bb
_color_aa
_color_ab

色 16進数形式 (0x000000〜0xFFFFFF)
_color

_colorTransform

明度
_brightness
_tintBrightness

コントラスト
_contrast

色相
_hue

彩度
_saturation
_dumbSaturation

詳細
_color_redMultiplier
_color_redOffset
_color_greenMultiplier
_color_greenOffset
_color_blueMultiplier
_color_blueOffset
_color_alphaMultiplier
_color_alphaOffset

———————————————————————-
■ CurveModifiers
_bezier

———————————————————————-
■ DisplayShortcuts
スケール (_xscale, _yscale連動)
_scale

アルファ (_visible切り替え機能付き)
_autoAlpha

フレーム
_frame

_scrollRect_x
_scrollRect_y
_scrollRect_left
_scrollRect_right
_scrollRect_top
_scrollRect_bottom
_scrollRect_width
_scrollRect_height

———————————————————————-
■ FilterShortcuts
ベベル
_Bevel_angle
_Bevel_blurX
_Bevel_blurY
_Bevel_distance
_Bevel_highlightAlpha
_Bevel_highlightColor
_Bevel_highlightColor_r
_Bevel_highlightColor_g
_Bevel_highlightColor_b
_Bevel_knockout
_Bevel_quality
_Bevel_shadowAlpha
_Bevel_shadowColor
_Bevel_shadowColor_r
_Bevel_shadowColor_g
_Bevel_shadowColor_b
_Bevel_strength
_Bevel_type

ブラー
_Blur_blurX
_Blur_blurY
_Blur_quality

カラーマトリックス
_ColorMatrix_matrix
_ColorMatrix_matrix_rr
_ColorMatrix_matrix_rg
_ColorMatrix_matrix_rb
_ColorMatrix_matrix_ra
_ColorMatrix_matrix_ro
_ColorMatrix_matrix_gr
_ColorMatrix_matrix_gg
_ColorMatrix_matrix_gb
_ColorMatrix_matrix_ga
_ColorMatrix_matrix_go
_ColorMatrix_matrix_br
_ColorMatrix_matrix_bg
_ColorMatrix_matrix_bb
_ColorMatrix_matrix_ba
_ColorMatrix_matrix_bo
_ColorMatrix_matrix_ar
_ColorMatrix_matrix_ag
_ColorMatrix_matrix_ab
_ColorMatrix_matrix_aa
_ColorMatrix_matrix_ao

_Convolution_alpha
_Convolution_bias
_Convolution_clamp
_Convolution_color
_Convolution_r
_Convolution_g
_Convolution_b
_Convolution_divisor
_Convolution_matrixX
_Convolution_matrixY
_Convolution_preserveAlpha

_DisplacementMap_alpha
_DisplacementMap_color
_DisplacementMap_color_r
_DisplacementMap_color_g
_DisplacementMap_color_b
_DisplacementMap_componentX
_DisplacementMap_componentY
_DisplacementMap_mapBitmap
_DisplacementMap_mapPoint
_DisplacementMap_mode
_DisplacementMap_scaleX
_DisplacementMap_scaleY

ドロップシャドウ
_DropShadow_alpha
_DropShadow_angle
_DropShadow_blurX
_DropShadow_blurY
_DropShadow_color
_DropShadow_color_r
_DropShadow_color_g
_DropShadow_color_b
_DropShadow_distance
_DropShadow_hideObject
_DropShadow_inner
_DropShadow_knockout
_DropShadow_quality
_DropShadow_strength

グロー
_Glow_alpha
_Glow_blurX
_Glow_blurY
_Glow_color
_Glow_color_r
_Glow_color_g
_Glow_color_b
_Glow_inner
_Glow_knockout
_Glow_quality
_Glow_strength

_GradientBevel_angle
_GradientBevel_blurX
_GradientBevel_blurY
_GradientBevel_distance
_GradientBevel_quality
_GradientBevel_strength
_GradientBevel_type
_GradientGlow_angle
_GradientGlow_blurX
_GradientGlow_blurY
_GradientGlow_distance
_GradientGlow_knockout
_GradientGlow_quality
_GradientGlow_strength
_GradientGlow_type

———————————————————————-
■ SoundShortcuts
_sound_volume
_sound_pan

———————————————————————-
■ TextShortcuts
_text_color
_text_color_r
_text_color_g
_text_color_b
_text_indent
_text_leading
_text_leftMargin
_text_letterSpacing
_text_rightMargin
_text_size

———————————————————————-

IEでビットマップ処理の負荷?

AS2 コンストラクタ内でステージサイズを取得して BitmapData を
つくろうとしたところ、Stage.width と Stage.height が 0 になってしまい
BitmapData がうまく作れない問題に出会った。

他にも重めのビットマップ処理系を走らせていたので
色々影響しあったのかもしれない。

FirefoxよりIEでよく発生する。
少し待てば大丈夫そうだったのでonEnterFrameで少し待つ。

/* ActionScript2 */

this._mc.onEnterFrame = Delegate.create(this, function(){
if(Stage.width>0){
//ここから色々実行
var bmp:BitmapData = new BitmapData(Stage.width, Stage.height, false, 0xFFFFFF);
this._mc.onEnterFrame=null;
}
});

MP3の再生スピード

iTunesで圧縮したMP3をFlashに読み込んだ時に
再生スピードが代わってしまうことがある。その回避法。

おそらく、サンプリングレートを11の倍数に と、
可変ビットレート禁止 ということ。

再生できるMP3の制限

FlashでMP3を再生する場合、以下の点を満たしていないとサウンドの再生スピードが変ってしまうことがあるようです。
* サンプリングレートが 44KHz、22KHz、11KHz のどれかである。
* エンコードモードは CBR(固定ビットレート)

– 参考サイト
サウンドを再生する – かやねずみの巣
サンプリング周波数 – Wikipedia

Debug.as

ステージ上にテキストフィールドを生成し、そこにtrace結果を出力する。
ブラウザ上でのデバッグ、検証に役立つはず。

実行方法: Debug.trace(〜);

/* ActionScript2 */

class Debug{

private static var _isInit:Boolean;
private static var _debugTf:TextField;
private static var _enableDisplay:Boolean = false;
private static var _enableWindow:Boolean = false;

private function Debug(){
}

/**
* デバッグの初期化
* @param	テキストフィールドをアタッチしたいMC(指定なしは_root)
* @param	ステージ上へのトレース許可(指定なしはtrue)
* @param	出力ウインドウへのトレース許可(指定なしはtrue)
*/
public static function init(mc:MovieClip, enableDisplay:Boolean, enableWindow:Boolean):Void{
Debug._enableDisplay = (enableDisplay==undefined)? true : enableDisplay;
Debug._enableWindow = (enableWindow==undefined)? true : enableWindow;
//テキストフィールドの生成(実行は1度だけ)
if(Debug._isInit){
return;
}
Debug._isInit = true;
var targMc:MovieClip = (mc)? mc : _root;
Debug._debugTf = targMc.createTextField("debug_tf",targMc.getNextHighestDepth(), 0,0,0,0);
Debug._debugTf.autoSize=true;
Debug._debugTf.multiline = true;//複数行許可(テキスト上をドラッグして古いのも見れる)
Debug._debugTf.textColor = 0x00FF00;
//一度ダミーのテキストを入れ、1行分の縦幅を調べる → autoSizeをオフにし、サイズをFIX。
Debug._debugTf.text = "TEST";
var tempHeight = Debug._debugTf._height;
Debug._debugTf.autoSize = false;
Debug._debugTf.text = "";
Debug._debugTf._height = tempHeight;
Debug._debugTf._width = Stage.width;
}

/**
* トレース処理
* @param	トレースしたいオブジェクト
*/
public static function trace(obj:Object):Void{
//initがまだ実行されていない時は実行する
if(!Debug._isInit){
Debug.init();
}
//ステージへ
if(Debug._enableDisplay){
Debug._debugTf.text += "n" + obj.toString();
//常に一番下の行へ移動する
Debug._debugTf.scroll = Debug._debugTf.maxscroll;
}
//出力ウィンドウへ
if(Debug._enableWindow){
trace(obj);
}
}

}

– asファイル
Debug.zip

MovieClip*5000 vs setPixel*5000

bmp_vs_mc.jpg

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

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

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

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

– flaファイル
bmp_vs_mc.zip

getPixel32

ビットマップデータは乗算済みカラー値として保存される。
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) //結果: クラス名

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

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

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});

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 */