イナヅマTVログ

2008.09.18
23:41
author: taikiken
0件のコメント

ActionScriptでリファクタリングをやってみた

当サイトトップのFlashコンテンツ、インスタンスはいくつまでモーションできるかの実験。
開発環境(Mac Book pro 2.5GHz 4GM)では18,000インスタンスが3fpsで動くのを確認できた。遅いCPUだと処理が追いつかずブラウザがハングアップしたように一切の操作を拒否し、強制終了の道しか残されていない。
上限を5,000インスタンス程度におさえアップしていた。

若干コードを見直しパフォーマンスが上がるか試してみる。
グローバル変数をローカル変数へなどの地味な作業を続けたところ、開発環境では少し向上したような・・・
上限を8,000インスタンスにしそんなにアクセスもないことだしアップしてみた。
ついでにリスタートのボタンを置いた、わかりにくいけど。
フレームレートを出力するクラスを改造しテキストか棒グラフかを選択できるようにしてみた。

2008.09.17
23:18
author: taikiken
1件のコメント

FlashとJava, Hobnox – Audiotool

Hobnox – Audiotool


Andre Michelle LaboratoryのAndreさんのプロジェクト。
AndreさんのラボのFlashコンテンツを注目していましたが、ココ最近更新がなくサビシク思ってたところ色々なプロジェクトで忙しかったようです。
ラボのFL 909を発展させたプロジェクトらしい。
なんかスゴスギて感動した。
FlashとJavaで作られている、Java環境が必須。
Andreさんのビデオチュートリアルで何ができるかを確認。

他にもpopforgeがGoogle codeで進行中。
こちらは音とイメージ系のFlash AS3ライブラリ。

2008.09.16
23:00
author: taikiken
0件のコメント

easing関数がサクサク作れる

GoASAPやHydroTweenで手軽にtweenができるようになると、fl.motion.easing.* クラスだけではものたりなく感じる時がある。
そんな時に便利なのがイージング関数/モーション関数(Easing Function)generator。

Fuse KitのCustom Easing Toolも使えたりするらしいけど、ネット上にも色々あるようです。

Custom Easing Function Explorer
イージングカーブを直接操作するのではなく、パラメタをスライダーで操作しなくてはいけないのでチョイめんどう。そんな勝手なことを言いながらありがたく使わせてもらう。

他にも、
http://timotheegroleau.com/Flash/experiments/easing_function_generator.htm

Creating a custom easing function

Flexコンポーネント カスタマイズ
Flex 2 Style Explorer
AdobeからはFlexコンポーネントのスタイル カスタマイズツールもあったりして、ちゃんとネットは使わないとソンする。

2008.09.15
11:30
author: taikiken
0件のコメント

HydroTween, ColorMatrixFilterでcolorをtweenできる?(3)

HydroTweenは色(color)をtweenする時、hexをRGB成分に分解した後ColorMatrixFilterの成分にセットするところで、luminance定数にx2.81している。
作者のdonovanさんの意図が良く分からないが、なにか理由があるのかもしれない?

x2.81をしないとどうなるか試してみる。
続きを読む →

2008.09.14
09:08
author: taikiken
HydroTween, ColorMatrixFilterでcolorをtweenできる?(2) はコメントを受け付けていません

HydroTween, ColorMatrixFilterでcolorをtweenできる?(2)

hex(0xRRGGBB)をRGBに分解する。
Quasimondo – Mario KlingemannのColorMatrix 、Grant SkinnerさんのColorMatrixとHydroTweenを参考にした。

hex:uintをRGB成分を持った配列へ変換する関数。

function hexToRGB(rgb:int, returnmode:Boolean=false):Array{
	var r:Number;
	var g:Number;
	var b:Number;
 
	r = (((rgb >> 16 ) & 0xFF) / 0xFF);
	g = (((rgb >> 8 ) & 0xFF) / 0xFF);
	b = ((rgb & 0xFF ) / 0xFF);
 
	if (returnmode) return [r*255,g*255,b*255];
	return [r,g,b];
}


1.hexToRGB(0xff0000); // [1,0,0]
2.hexToRGB(0xff0000,true); // [255,0,0]

続きを読む →

2008.09.13
22:54
author: taikiken
0件のコメント

HydroTween, ColorMatrixFilterでcolorをtweenできる?(1)

HydroTweenはcolorプロパティ(色)のtweenにColorMatrixFilterを使っている。
hue,saturation,contrast,brightnessなどの変化に使われているアレ。
Grant SkinnerさんのColorMatrixが移植されている。
このmatrix、分かる人には分かるのだろうけど相当難しい。

ColorMatrixFilterを使って任意の色指定ができるのかHydroTweenを参考に調べてみる。
続きを読む →

2008.09.12
12:51
author: taikiken
1件のコメント

HydroTween, HydroSequence repeaterでのBugをFixする

HydroTween, HydroSequenceで複数インスタンス(ターゲット)を繰返しtweenする時の挙動がおかしいのを修正した。

LinearGoRepeaterインスタンスを設定した場合とObjectの場合とで動きが変わっていた原因を探ってみる。
Objectの場合はターゲットの数分だけLinearGoRepeaterインスタンスが作られるが、LinearGoRepeaterインスタンスの場合は1回しかLinearGoRepeaterインスタンスが作られていない。
どうもココが怪しいのでは、と目星をつける。
続きを読む →

2008.09.11
09:35
author: taikiken
0件のコメント

LinearGo, CONSTRUCTORの引数

LinearGoがコアな関数ぽいので引数を調査してみる。
デフォルト引数が設定されているので空でもかまわない。
これだけ引数があるとrepeaterだけ設定したい時とかちょっとめんどくさい。
サブクラスを作って使う方が簡単そう。

ドキュメントにもサブクラスは簡単に作れるしその方が便利だよ、サブクラスでsuper()するのを忘れないで(相当意訳)てサ。
続きを読む →

2008.09.10
22:03
author: taikiken
0件のコメント

EventサブクラスにtoString,cloneを追加しなければいけない?

Essential ActionScript 3.0


Essential ActionScript 3.0を読みなおしていたらEventサブクラスにtoString,cloneを必ず(must)追加しなさい、って書いてあったのに気がついた、あらためてFlash CS3のヘルプをみてみると。

「toString() メソッドのオーバーライドを推奨しますが、必須ではありません。」だとか、LiveDoc

「Event サブクラスを作成する場合は、clone() と toString() メソッドをオーバーライドして、サブクラスに固有の機能を提供する必要があります。」とか書いてある。LiveDoc

あいかわらず分かりにくい説明でイライラさせられる。
toString,cloneを追加しておかないとカスタムEventの情報が正しく取得できなくなるヨなことなのでしょうか。
どっちみち自分で作って自分で使うのだからめんどうだったら作らなくてもいいことにしておいてあげる、なんでしょうネ。

ここはFlashの神Colin Moockさんの言うことを素直に聞いて、ちゃんと作ることにする。

public override function clone():Event {
	return new CustomEvent(type, bubbles, cancelable, [arguments]);
}
public override function toString():String {
	return formatToString("CustomEvent", "type", "bubbles", "cancelable", "eventPhase",[arguments]);
}

ちなみにflash.events.EventDispatcherを継承したorg.goasap.PlayableBaseのtoString関数はこんな感じ。

override public function toString():String {
	var s:String = super.toString();
	var addLast:Boolean = (s.charAt(s.length-1)=="]");
	if (addLast) s = s.slice(0,-1);
	if (playableID is String) s += " playableID:\"" + playableID + "\"";
	else s += " playableID:" + playableID;
	if (addLast) s += "]";
	return s;
}

このイベントでのbubblesは「prototype.js」でも悩んだけど説明を何度読んでも頭に入ってこない。使いどころはどこなんだろう。。

2008.09.09
18:06
author: taikiken
0件のコメント

LinearGo, SequenceCA, HydroTween, HydroSequenceのクラス図

LinearGo, HydroTween, HydroSequenceのクラス図を書いてみた。
PlayableBaseからスーパークラスのEventDispatcherを継承する親子関係。
めんどうでも書いてみると分かりやすいものだと教訓。

背景がグレーなのはhidrotikのクラス、白はGoASAPのクラス、オレンジなのはFlashビルトインクラス。

LinearGo,SequenceCA,HydroTween,HydroSequenceのクラス図

LinearGo,SequenceCA,HydroTween,HydroSequenceのクラス図