タグ「AS3」が付けられているもの

Math & Physics

外出の合間に寄った本屋で衝動買い・・・
技術書関連の棚の前に平積みされているのを発見して、帯と目次でヤラれました。

フィボナッチ数列、三角関数、ベクトル回転運動、3次元理論、物理法則 などなど・・・ 多くの方は頭が痛くなりそうな単語の羅列ですが、こんな本まで買って数学・物理付いている私には垂涎モノです。
さらに、ずっと欲しかった詳説 ActionScript 3.0も取り寄せをお願いしてしまいました。(実は、ゲーム3D数学 はおろか、かなり前に買った ActionScript 3.0 アニメーション すら読了できていないですが・・・)

Flash / AS関連本となるとついつい衝動買いしてしまい、やたら数だけは増えましたが、なかなか仕事に活かせていないのが実情かもしれません・・・
衝動買いとはいえせっかく買った本なので、しっかり読んで、自分の力にして、仕事に活かしていかないとマズイですね。

検索からAS3関係のサンプルプログラムを拝見してくださっている方もいるようなので、サンプルの数も増やせるように頑張ります。

AS3 TextField メモ

お仕事で外部ASファイルからTextFieldをイジる機会があったのですが、若干手間取ったので忘れないうちにメモ。
(以下は全て、Flash IDE + 外部ASファイル 環境での内容です。Flex の場合、画像などと同様に、Embed メタデータタグを使用するそうです。)

  1. 文字を指定したフォントの埋め込み
  2. デバイスフォントのBitmap化

AS3 アニメーション No.3

これも基本的な、ステージ境界での跳ね返りです。

Sprite の座標とステージサイズを比較して、ステージ外にはみ出す場合に移動量を反転するだけです。

private function moveCircle_handler( event:Event ):void
{
	for ( var i:Number = 0; i < circleNum; i++ )
	{
		// 円 移動
		circles[i].x += circles[i].vx;
		circles[i].y += circles[i].vy;
		
		// 境界判定
		checkWalls( circles[i] );
	}
}

private function checkWalls( _circle:Circle ):void
{
	// 左
	if ( _circle.x - _circle.radius < 0 )
	{
		_circle.x = _circle.radius;
		_circle.vx *= -1;
	}
	// 右
	else if ( _circle.x + _circle.radius > stage.stageWidth )
	{
		_circle.x = stage.stageWidth - _circle.radius;
		_circle.vx *= -1;
	}
	// 上
	if ( _circle.y - _circle.radius < 0 )
	{
		_circle.y = _circle.radius;
		_circle.vy *= -1;
	}
	// 下
	else if ( _circle.y + _circle.radius > stage.stageHeight )
	{
		_circle.y = stage.stageHeight - _circle.radius;
		_circle.vy *= -1;
	}
}

ムダに Sprite を増やすとこうなります。

これだけだと全く意味がありませんが、動きを統制するとパーティクル表現が可能になります。そのあたりは追い追い・・・

動いている円にドラッグ&ドロップ機能を追加すると、ボールを投げているような表現が可能になります。

AS3 アニメーション No.2

引き続き、AS3アニメーションのサンプルプログラムです。

一つめはマウスを追従する Sprite です。よくあるというより、既に使い古された感がありますね。
とはいえ、Point 間の距離や角度を算出するシンプルなサンプルには最適かと!?

EnterFrame で Mouse と Sprite の座標を取得し(mousePoint:Point / arrowPoint:Point)、2点間の距離からラジアンを算出。さらに度へ変換し Sprite を回転させます。
同様に、ラジアンと速度からX軸/Y軸の加速度を求めます。

ちなみに、角度の算出や変換などの汎用的な処理は、public static な method として、自作の class(Utils)へ登録しています。

private function moveArrow_handler( event:Event ):void
{
	// 座標取得
	mousePoint.x = mouseX;
	mousePoint.y = mouseY;
	arrowPoint.x = arrow.x;
	arrowPoint.y = arrow.y;
	
	// 矢印 回転
	var angle:Number = Utils.getRadian( mousePoint, arrowPoint );
	arrow.rotation = Utils.RadianToDegree( angle );
	
	// 加速度 算出
	arrow.vx = Math.cos( angle ) * speed;
	arrow.vy = Math.sin( angle ) * speed;
	
	// 矢印 移動
	arrow.x += arrow.vx;
	arrow.y += arrow.vy;
}

public static function getRadian( tp:Point, cp:Point ):Number
{
	var dx:Number = tp.x - cp.x;
	var dy:Number = tp.y - cp.y;
	// var radian:Number = Math.atan2( dy, dx );
	return Math.atan2( dy, dx );
}

public static function RadianToDegree( radian:Number ):Number
{
	return radian * 180 / Math.PI;
}

AS3 アニメーション

若干自由に使える時間ができたので、ここぞとばかりに Flash のお勉強です。お仕事では AS2 ばかりで AS3 で作ったモノといえばここのトップくらいなので、基本的なトコから復習です。
ということで、最近買った本や以前買ってちゃんと読めていなかった本を読み漁ってます。

入門ノート1は以前読んだけど2はまだ手付かず・・・ WebDesigning の8月号はライブラリ一覧(見開き1ページ)のためだけに買いました。で、OOPを読了して、アニメーションをちゃんと読み直しています。

そんな感じで、ライブラリを使わない数学・物理的なアニメーションをサンプル作って勉強しています。

公開されました。

すっかり更新が滞っている間に5月も終わろうとしていますが、ちゃんと仕事はしています! というか、平日日中は常駐先で派遣のお仕事を、帰宅後と週末は家でフリーのお仕事を詰め込んでおります。
いやはや、なんともありがたい・・・

そんなこんなで、先日公開されたサイトです。
20080531.jpg
レトロな雰囲気でかわいらしいコンテンツに仕上がっています。

知の探求

打ち合わせ帰りにお買い上げです。

便利な世の中になりました。

NLOCサイトを作る上でお世話になったライブラリ群+αのご紹介です。
力を入れたのがトップのFlashとLAB(blog)なので、そのふたつが中心です。(というか、その他は特に紹介するようなモノがないので・・・)

top FLASH
Papervision3D 2.0
Tweener
BulkLoader
MacMouseWheel
LAB
Movable Type Open Source
jquery.js
interface.js
thickbox.js
yuga.js
iepngfix.js
MT Plug-in 諸々

デザイン会社に勤めていることからずっと触ってみたかったPV3D・・・ いい機会だったのでむりやり使ってみましたw

色々なFlash案件に携わってきましたが、AS3は今回初めて。ということで、買ったままなかなか読めずにいた本と、偉大なる先人の方々のサンプルを参考に四苦八苦しながらの制作作業。
ディスプレイサイズとの兼ね合いだったり、画像のジャギーだったり、中途半端なBulkLoaderの使い方だったり・・・ 気になる部分が残ってはいるんですが、AS3デビューということでとりあえず満足しています。

blog はコンテンツ的に寂しかったので、自分の備忘録や実験の場もかねて設置しました。
当初はWordPressにしようと思ってたんですが、借りているサーバの環境的にPHPが面倒だったのでPerlに方向転換。サイトの位置付けとして個人事業のポートフォリオ的な側面も持っているので、ライセンス料の掛からないMTOSになりました。

数年ぶりのMTということで、こちらも手頃な本を片手にカスタマイズ開始。
何箇所かてこずる部分もあったんですが、便利なPlug-inやLibraryが色々あって、作ってて面白かったです。

自分のサイトってブラウザの制約を除けば何でもアリだから、クライアントから依頼されて作るモノとは違った難しさがありますね。止めてくれる人が誰もいないから、どこまでやっていいのかが分かんない。でも、そこが一番面白かったりするんですけど。
特に最近はいろんなライブラリが公開されてて大概のことは簡単に出来ちゃうから、やれることは全部やってみたくなる。僕なんかは、使う必要がないのに使ってみるって状態に陥りやすい。今回のPV3Dがまさにそうですねw
自己満足にならないようにしないと!