Progression 4 Bata のことはじめ

  • 2009 年 10月 12 日
  • kosuke

Progression4のBata版が公開されて少し起ちますが、先日、試しにとあるProgression3プロジェクトをProgression4に書き換えてみました。
といっても、純粋にProgression3の構文をProgression4で動くように書き換えただけですので、まだProgression4の新機能はほとんど試せていません。
Progression3で出来ていたことを、Progression4にそのまま移行すること自体は問題なく出来る感じです。
以下、細かい感じですが、今のところ迄で気づいたことを記録しておきます。

■ブラウザウインドウ最小サイズの管理がSWFForceSizeからSWFSizeに変わったみたい。

SWFSizeはSWFForceSizeの機能をASに埋め込んでFlashからHTMLの最小サイズ、最大サイズを設定できるライブラリ。
Progression4 Bataでは、このライブラリが採用されている模様。

Progression3では、HTMLへの記述で最小サイズを指定していました。

progression.embedSWF( {
    width:800,
    height:600,
    adjustHorizontal:true,
    adjustVertical:true,
    centering:true,
    flashvars:{
    },
    params:{
        bgcolor:"#000000",
        wmode:"window",
        allowscriptaccess:"samedomain"
    },
    attributes:{
    }
} );

このwidthとheightで最小サイズが設定されていたのですが、Progression4 BataだとWebConfig()を生成した段階なんかで設定されるようだ。
WebConfigの第二引数でSWFSizeを有効化するかどうかとなっている。

で、このまま何もしないとflaファイルのステージサイズが最小サイズになる模様。
またPreloaderを使っている場合、Preloaderの段階では最小サイズの制限が設定されない。
なので、全画面Flash、最小サイズ固定で作る場合、Preloaderの段階で明示的にSWFSize.initializeを実行しておいたほうが良さそう。

■Listenコマンドが無くなったみたい
ListenコマンドはProgression3にあったイベント待ちのコマンド。
あまり使うこともないと思いますが、Listenと同様のことをするならFuncコマンドを使う感じですかね。

protected override function atSceneLoad():void {
	var dispatcher:SceneObject = this;
	addCommand(
		new Trace( "1st" ),
		new Func( function():void{
			Tweener.addCaller( this, { count:1, delay:2,
				onComplete:function():void{ 
					dispatcher.dispatchEvent( new Event( Event.COMPLETE ) )
				}
			});
		}),
		new Func( new Function(), null, dispatcher, Event.COMPLETE ),	//Listenコマンド代用
		new Trace( "2nd" ),
		new Func( function():void{
			Tweener.addCaller( this, { count:1, delay:2,
				onComplete:function():void{ 
					dispatcher.dispatchEvent( new Event( Event.COMPLETE ) )
				}
			});
		}),
		function():void{ this.listen( dispatcher,Event.COMPLETE ) },	//匿名関数でListenコマンド代用
		new Trace( "finish" )
	);
}

上記の場合はそもそもListenでやらず、Tweener.addCallerの書かれたFuncでイベント待ち設定すれば良い訳だけれど。

■コマンドの処理状態プロパティがrunningからstateに変わったみたい。
Progression3では、コマンド処理中であるかをどうかを、runningで判定していましたが、これがstateプロパティに変わった模様。Progression3での中断処理のプロパティinterruptingと一緒にstateに統合された感じかなと。

■Progressionのオブジェクトを継承したSWFを読み込んでもガベージコレクションされるみたい。
問題になっていたメモリリークも大分解消されているっぽい。
以前メモリリークで試したサンプルをProgression4に書き換えてみたのがこちら。

サンプル:Progression4 Bataのメモリ使用状況確認

最初の読み込み分が消えいないような気がしますが、ひたすら増えてくってことは無くなった模様。
読み込まれるSWFの方にシーンを持たせるって、目玉の機能はまだ試せていないので、その時のメモリの挙動も次試してみようと思ってます。

ベータ版の状況なんで、今後どう変わってくるかわからないですが正式版のリリース心待ちにしてます。

PixelateFXを詳しく

  • 2009 年 9月 25 日
  • kosuke

PixelateFXはモザイク表現のサンプルになっている。
モザイクの仕組み的は対象を縮小してBitmapに転写した後、元のサイズに拡大することで、結果的に低画素の画像を拡大していることとなりモザイクが表現されています。
モザイクは色々なライブラリが公開されていて、今更って話なところもあるけどTweensyFXでもPixelateEffectクラスでモザイク効果を表現できるようになっています。

■PixelateEffect
モザイク表現のエフェクト。


■プロパティ
一つだけ…。


    amount:Number = 50

  • モザイク用に画像を縮小する際のスケール値。
  • 50なら1/50に縮小。1なら縮小なし(モザイク無し)
  • この値が大きい程、モザイクのサイズが大きくなる。


PixelateFXの分解

PinkBlobs2FXを詳しく

  • 2009 年 9月 23 日
  • kosuke

TweensyFXのサンプル、PinkBlobs2FXを調べてみる。
サンプルにはPinkBlobsFXとPinkBlobs2FXがあるけど、PinkBlobsFXは円のオブジェクトが上下に移動するモーションで、PinkBlobs2FXはPinkBlobsFXにメタボール効果を加えたものになっている。共に円のトゥイーンはAlianRainFXと同様なので割愛することにします。メタボール効果の手法を見てみる。

メタボールは前にエントリーしたことがあるけど、輪郭がギザギザにるのでどうにか滑らかにする必要があった。
PinkBlobs2FXはこの処理の参考になります。

まず、メタボールを作る手法は以前のものと同じ。BitmapDataのthresholdを使ってしきい値以下を置き換えている。
thresholdを扱うエフェクトとしてThresholdEffectが用意されています。
ポイントはしきい値以下を透明に置き換えるところ。
ぼけ足のついた円を上下に動かしていますが、透明に近いところはこの処理で消える。複数の円が動いているのでぼけ足の重なったところはより残るようになる。これを使ってメタボールのくっつく表現をするわけです。

エッジの処理は、これまで同様、前回迄の描画に徐々に消えていく設定のColorEffectを加え、Blurをかけてぼかす。
これにThresholdEffectで分離。
今回の円を描画。
ここまでがBitmapLayerの処理で、更にBitmapLayer自体にGlowFilterを適用して外側に光彩を加えることでエッジのジャギーを無くしている形。かなり溶けて行く感じのメタボールになっていますが綺麗に出来ているなぁと感じました。


PinkBlobs2FXの分解”

TweensyFXのサンプルから学ぶの残り

  • 2009 年 9月 22 日
  • kosuke

TweensyFXのサンプルから学ぶ。ここまで名前順に調べエントリーしてきたのだけど、残りのサンプルはEmitterの設定の違いであって目新しいところが少なそうです。
Emitter設定時の色や放出角度の値だったりと手法として参考になる感じじゃないように思えた。なので残りのFXサンプルから調べるものを取捨選択することにしました。

残りのFXサンプルのうち、MagicFX、SmokeFX、ZanyBoltsFXの3つは、FireFXやFireSmokeFXのグラフィックやEmitter設定の違いだけって感じなので省くことに決めた。

残った、
OrbitingMagicFXの回転しているところ。
PinkBlobsFXのメタボールみたいになるところ。
PixelateFXのモザイクを調べてみようと思う。

この投稿の続きを読む »

SnowLeopardのSafariの件

  • 2009 年 9月 17 日
  • kosuke

今日の仕事の半分を雪豹のSafariに費やされたので記録しておく。

64bit化が進んだSnowLeopardでは、Safariは通常64bitモードで動いています。
しかし今のところほとんどのプラグインは32bit版。
Flash Playerもまだ32bit版のみ。

この投稿の続きを読む »

FireSmokeFXを詳しく

  • 2009 年 9月 16 日
  • kosuke

TweensyFXのサンプルから学ぶ。FireSmokeFXを詳しくみてる。
FireSmokeFXの煙のEmitterと炎のEmitterの二種類を使っている以外、中身はおおよそFireFXと同様の仕組みです。
なので異なる部分を中心に気になったところを記録しました。

この投稿の続きを読む »

FireFXを詳しく

  • 2009 年 9月 14 日
  • kosuke

TweensyFXから学ぶシリーズ。
今回はFireFXですが、FireFXは前回のElectroBoltFXで書いたEmitterの設定がほとんどで目新しいところがちょっと少ない。
なので流れを確認する程度に調べています。

この投稿の続きを読む »

ElectroBoltFXを詳しく

  • 2009 年 9月 10 日
  • kosuke

TweensyFXから学ぶシリーズ。ElectroBoltFXを調べた記録です。
ElectroBoltFXの要はEmitterってクラス。

EmitterといえばFlintではパーティクルを放出するクラスでした。TweensyFXのEmitterクラスも同じくパーティクルを放出するクラスです。
このEmitterは設定に基づいて、パーティクルにモーション(Tweensyで)を作っているに過ぎない。これまで調べたTweensyFXのエフェクトとちょっと勝手が違って今回は表現を作るにはこのEmitterの設定をしていく感じ。

でもそれだと「TweensyFXから学ぶ」シリーズ本来の目的である、応用の効く手法を学ぶてところから少し離れちゃうので、今回はパーティクルを放出している仕組みに重点をおいて調べました。たぶんパーティクルのアニメーションをオリジナルで作っても近い構造になりますよね。

この投稿の続きを読む »

TweensyGroupのコンストラクタについて

  • 2009 年 9月 9 日
  • kosuke

これまで調べたTweensyFXのサンプルファイル全てで、TweensyGroupのインスタンスが生成されています。BulgeFXなんかはインスタンスがあっても使われていないので定型的に入れられているだけと思いますが。

ここで気になったことがあって、TweensyGroupのインスタンス生成時に、

new TweensyGroup(false, true);

と宣言していること。このコンストラクタ引数がなんだろうと思ったので記録しておきます。

この投稿の続きを読む »

BumpMapFXを詳しく

  • 2009 年 9月 8 日
  • kosuke

TweensyFXのサンプル、BumpmapFXから学ぶ。
BumpMapFXでは前回のエントリーで調べたConvolutionFilterが使われています。
ConbolutionFilterはいかんせその設定が直感的にいかなそうなので、活用法として知っておきたい。

この投稿の続きを読む »

@