2006 年 7 月 のアーカイブ

AS3メモ Flex2のmxパッケージをFlash9で使用する

2006 年 7 月 31 日 月曜日

なんかできるらしい。

1.無料のFlex2 SDKをダウンロードして展開する。
2.使用したいクラスのソースコードを開き
 1.コード内にある”mx.core.mx_internal”等の、flex2に直結したクラスのインクルードをコメントアウトする
 2. コード内にある全ての”mx_internal”というネームスペースの記述を取り除く
2.Flash9のクラスパスにFlex2 SDKのmxクラスディレクトリを追加する。

これで、Flex2の強力なバリデーションや、アニメーションクラスがFlash9で使えるとか。
未検証な情報ですが、一応。

AS3メモ トゥイーンのメモ2

2006 年 7 月 31 日 月曜日

ActionScript Orgに一覧乗ってるスレがあった

Liner, Cubic, Quadlic, Quintまで全部そろってますよ。これで一見落着。

Math.linearTween = function (t, b, c, d) {
return c*t/d + b;
};
Math.easeInQuad = function (t, b, c, d) {
return c*(t/=d)*t + b;
};
Math.easeOutQuad = function (t, b, c, d) {
return -c *(t/=d)*(t-2) + b;
};
Math.easeInOutQuad = function (t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
};
Math.easeInCubic = function (t, b, c, d) {
return c*(t/=d)*t*t + b;
};
Math.easeOutCubic = function (t, b, c, d) {
return c*((t=t/d-1)*t*t + 1) + b;
};
Math.easeInOutCubic = function (t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
};
Math.easeInQuart = function (t, b, c, d) {
return c*(t/=d)*t*t*t + b;
};
Math.easeOutQuart = function (t, b, c, d) {
return -c * ((t=t/d-1)*t*t*t - 1) + b;
};
Math.easeInOutQuart = function (t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
};
Math.easeInQuint = function (t, b, c, d) {
return c*(t/=d)*t*t*t*t + b;
};
Math.easeOutQuint = function (t, b, c, d) {
return c*((t=t/d-1)*t*t*t*t + 1) + b;
};
Math.easeInOutQuint = function (t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
}; 

引き続き、 Back, Bouce, Circular, Exponential, Quartic あたりの式も捜索中・・・ってここまできたらR.Pennerのソース見る方がはやかったなぁ。

で、こいつらをGrowとかBlurとかResizeとかのeffectクラスの、 easingFunctionプロパティとして定義してやればいいわけか。
複数のトゥイーンを同時に動かすときはParralel, 順番に動かすときにはSequenceというコンポジットパターンのコンテナに入れてやるわけですね。
で、アニメーションの開始、更新、終了時にそれぞれイベントを出す・・・ と
フル実装すると、mx.effectがflash9でも使えるようになったら無駄になるので、作るなら簡易版にとどめるのが吉と。

AS3用 トゥイーン・クラスのメモ

2006 年 7 月 31 日 月曜日

AS3(flex2)のアニメーションは、ロバート・パンナーのtweenライブラリが採用されてるすね。
ってことは、Flash9がリリースされたときには、スクリプトのアニメーションはflex2同様に、mx.effects.easing ライブラリで制御されるっぽい。

自作でイージイン用のコード書く場合も、これと入出力を同じにしとくとあとで交換がきくんジャマイカと。

function( 現在の時間, 初期値, 増減差分, アニメーション時間): Number{
~ ここで計算 ~
return resultValue
}

とすると、基本のアニメーション関数はこんな感じかな

Sineによる可減速

function( currentTime, initValue, difference, duration): Number{
var rad = currentTime / duration -0.5 ;
var resultValue = (Math.sin(  rad *Math.PI  ) +1) * 0.5 * difference + initValue
return resultValue
}

ってやったら、あまり気持ちよくない・・・ どうやらSinじゃなくてQuadricのトゥイーンを実装しなきゃダメっぽいけど
数学わかんね・・・

と思ったら、R.Penner easingの掲示板への書き込みを発見。この式を移植しろってことなのかな。

イーズアウト
currentValue = -difference * (currentTime/=duration)*(currentTime-2) + initValue;

イーズイン
currentValue = difference*currentTme*currentTime/(duration*duration) + initvalue;

イーズイン&アウト

将来的なことを考えるのなら、Flash使いにとって定番だった、x = x + ( tx - x ) * speed の式をそろそろ卒業せにゃあかんということなのかなぁ・・・ 数学メンド臭いなぁ。

これとかも資料

日記

2006 年 7 月 31 日 月曜日

とりあえず、簡易コンポーネントっぽい機構と、コマンドがそろったので、あとはコマンドに登録可能なアニメーション系を作れば、そろそろスクラッチ以外のサンプルが作れそうな気もしないでもないような。

しっかし、うちのパソコンだとFlex2もFlash9もコンパイルが遅い遅い。やってられませんがな。

AS3用のCommandライブラリ作ってみた

2006 年 7 月 31 日 月曜日

net.fladdict.commands パッケージ

「任意の関数を実行する」という機能を実装したAS3用のCommandライブラリを作りました。
AS3でのボタンのカスタマイズや、アニメーション、動的な動作変更のたたき台になるんじゃないかと。とりあえず版権フリーです、というか誰かもっと使いやすくして再アップして…
たたき台なのでまだ色々とアレです。

一応、内包してるクラスは以下の通り

Command
関数executeから、登録した任意の関数を実行する。

TimerCommand
関数execute実行後、指定時間たったタイミングで登録した任意の関数を実行する。

EnterFrameCommand
関数execute実行後、指定フレームたったタイミングで任意の関数を実行する。

MacroCommand
関数executeから、登録した複数のCommandサブクラスを一括実行する。

SequenceCommand
関数executeから、登録した複数のCommandサブクラスを一括実行する。MacroCommandが全てのコマンドを一斉に実行するのに対し、こちらは1つ1つ処理が終わる毎に次のCommandを実行する。ファイルロードやアニメーションなど非同期通信向け。

CommandEvent
コマンドの完了時に発行されるcommandCompleteイベントと、複数の関数を実行する場合に1つづつ呼ばれるcommandProgressの2種類。

(more…)

AS3メモ Commandライブラリ仕様メモ

2006 年 7 月 28 日 金曜日

FlashOOPのクラス共有プロジェクト用に、Commandクラスライブラリを作ろうかと模索中。

というか仕事でもプライベートでも、自動化したい処理がやたらいっぱいあって、AS2でもAS3でも両方必要な気分になってきた。
作る前に考えまとめたいので、メモ。

Applyをラップして、任意のタイミングで任意の関数を呼び出すクラスを実装するとして、結城先生の本をベースにEventDispatcherを追加するとこんな感じかな??

public class Command implements ICommand extends EventDispatcher{
private var _thisObj:Object;
private var _functionRef:Function
private var _arguments:Array

public function Command( _thisObj:Object, _functionRef:Function, _arguments:Array):void{
this._thisObj = _thisObj;
this._functionRef = _functionRef;
this._arguments = _arguments;
}

public function execute( ... args:Array ):Object{
var rslt:Object = _functionRef.apply( _thisObj, args || _arguments);
var event:CommandEvent = new CommandEvent( CommandEvent.COMPLETE)
event.result = rslt;
dispachEvent( event );
return rslt;
}
}

基本的に、コンストラクタで関数の引数を定義するのだけど、executeから関数を呼び出すタイミングでも引数を渡せる。で、関数の実行結果を戻してくれる。 AS3からクロージャが自動でデリゲートされるらしいけど、AS2とロジックをできるだけ共有したいのでapplyで逝きます。

(more…)

AS3雑記

2006 年 7 月 26 日 水曜日

2週間触って、とりあえず使い方はだいたい把握した。
やりたいことをするのり、リファレンスの何処をみればいいのか理解した感じ。

ただ、マウスリリースの扱いやら、効率のよいクラス構造やら、ノウハウレベルじゃあ全然わからんち。
もっと研究が必要。

結論として、Flex2ビルダーでクラスを作成して、Flash9でオーサリングするスタイルは、十分なクラス資産ができれば、ブログパーツ系とかRSSニュース等のシステムレベルで再利用が可能なモノは鬼速で作れるようにになりそうな予感。

今のうちにAS3覚えると、ちょっと高機能なオセロ等のミニ・ゲームエンジンや、ブログパーツエンジン作ってスキンだけ変えて延々と食いつなぐ、とかいうスタイルも数年ぐらいならやってけるんじゃないかと。

アプリケーションレベルでの開発はぜんぜんわかんねぇけど、サイトレベルでの製作では、AS3で作ったクラスに如何にダイナミックに設定やスキンを割り当てるメソッドを確立するか?ってのがキーポイントになりそう。

こっから先は、色々サンプルつくらないとわかんないだろうなぁ。

AS3メモ ローカル変数の宣言って微妙に重いのか?

2006 年 7 月 24 日 月曜日

やりたいことの処理が、AS3の処理速度でも微妙におっつかない orz。
で、色々実験中。

ちゃんと検証してないからなんともいえないのだけど、ひょっとして厳格なローカル変数の宣言ってそれなりに負荷高かったりするんすかね?

2万回ぐらいのループがあるときに、ループ内で使用する変数をループ外で宣言するようにしたら、心持かなり高速化された気がするんですけど気のせいなのかな。

var hoge:Number
var hogehoge:Number
...
for(var i:Number=0; i<20000; i++){
}

今の御時勢変数が2~3万個ぐらい増えてもメモリー的になんの影響もないなら、ローカルで計算に使う変数とか全部プロパティ化して最初から定義しておいたほうが速かったりするのかね。

そこら辺詳しい人、誰かおしえてくだつぁい。

ヤコブ・ニールセンのAlertbox -そのデザイン、間違ってます

2006 年 7 月 23 日 日曜日


ヤコブ・ニールセンのAlertbox -そのデザイン、間違ってます

ユーザビリティ大御所のヤコブ・ニールセン氏のエッセイ集。
ちょっと期待してた本が出た。

ユーザビリティ原論』とか書いていたころはバリバリの極右派の人だったのだけど、ノーマンとタッグを組んでからかなり柔軟な人になってきたみたい。本に載ってるエッセイは全部サイトで読めるのだけど、どれもかなり面白い。

サイトのエッセイとか見て、面白いと思ったら買いです。

今日の日記

2006 年 7 月 23 日 日曜日

気がついたら、

・ヘテムルがサーバー設定変えてて、FTPアクセスできなくなってた
・PHP5の使用条件が変更されてて、HatenaTubeが更新されなくなってた
・はてなのRSSが変更されたのか、HatenaTubeのパース数が減ってた
・動画filenaviで紹介されたらしく、HatenaTubeのトラフィックが2.5倍になった。
・なんかスパムフィルタが暴走して、とんでもない割り振りしてた

なんか、忙しさにかまけてるうちにいろいろ大変なことになってたようです。