Workshop

野中文雄のFlash CS4 3D講座

Flash CS4 Professionalには、3次元空間の表現力が加わりました。ActionScript 3.0にも、Flash Player 10対応のこうした機能を実現するクラスやメソッドが備わっています。本講座では、3つのクラスとひとつのメソッドをご紹介します。

  • ・Matrix3Dクラス
  • ・Vector3Dクラス
  • ・Vectorクラス
  • ・Graphics.drawTriangles()メソッド

第1のMatrix3Dクラスは、MovieClipなどのインスタンスに3次元座標変換を加えます。第2のVector3Dクラスは、3次元空間の座標を操作します。第3のVectorクラスは、直接3次元空間には関わらないものの、複数の座標などを最適化して扱います。第4のGraphics.drawTriangles()メソッドは、ビットマップを複数の三角形に分けてマッピングし、3次元を表現するために用いられます。

これらのクラスやメソッドの使い方と、その前提となる3次元座標空間の考え方について、サンプルスクリプトを示しながら解説します。また、ベクトルや行列などの数学的な基礎にも触れます。

Get Adobe Flash player

※講座内容の応用例です。講座では、立方体1面の扱いを中心として、スクリプトの仕組みと考え方を解説し作成いたします。

数学の知識については、高校文系程度で結構です。スクリプトはActionScript 3.0を使い、Flashムービーファイルにフレームアクションで記述します。カスタムクラスの定義は行いません。イベントリスナーの扱いや条件判定を理解していることが前提となります。

講座レベルlevel3

■カリキュラム概要

  • 3次元座標空間の表現

    • パースペクティブ
  • Graphics.drawTriangles()メソッド

    • Vectorクラス
    • VectorクラスがArrayクラスと異なる点
    • 塗りのビットマップの指定
    • Graphics.drawTriangles()メソッドの引数
    • ドラッグで変形した任意の四角形にテクスチャマッピング
  • Matrix3Dクラス

    • 変換のprependとappend
    • Matrix3D.prependRotation()メソッド
    • Matrix3D.appendRotation()メソッド
    • 座標変換が適用される順序
    • 複数の座標変換を組合わせる
  • Vector3Dクラス

    • ベクトルの内積
    • 透視投影
    • Matrix3Dクラスを用いたVector3Dの座標変換

*カリキュラムの進度および内容は、受講者全員の理解度・習得度によって変更される場合があります。

使用アプリケーション
Adobe Flash CS4
講師
野中文雄
定員
6名
対象
ActionScript 3.0のイベントリスナーの扱いを学習された方。
林拓也のActionScript 3.0入門講座(後半) 」を受講された方。
本ページ下の 受講対象レベルチェック問題 を理解できる方。
料金
29,800円(税込み)

2010年5月20日(木)11:00~18:00残り6席

お申し込み:2010年5月20日(木)

受講希望の方は 受講規約 および よくある質問 のページを閲覧していただき、ご了承の後にお申し込みフォームからお申し込みください。また お申し込みの流れ もご参照ください。

■受講対象レベルチェック問題

*全問正解が受講の必須条件ではなく、受講対象レベルの具体的な目安とお考えください。

問1:

円の面積を求める関数xGetCircleArea()を定義してください。関数xGetCircleArea()に円の半径を渡すと、円の面積が返されます。たとえば、つぎのとおりです。

trace(xGetCircleArea(10));
// 出力: 314.1592653589793

問2:

上記「問 1」で作成した関数xGetCircleArea()に、仕様を追加します。円の半径は正数でなければなりませんので、引数として負の数を渡したときは、特別な値NaNを返すようにしてください。たとえば、つぎのような結果になります。

trace(xGetCircleArea(-10));
// 出力: NaN

問3:

DisplayObject.addEventListener()メソッドを使って、MovieClipインスタンスを回転するフレームアクションを作成してください。回転は時計回りで、速度は毎フレーム10度とします。スクリプトは、MovieClipシンボルの第1フレームアクションに記述します。

答1:

ActionScript 1.0で記述していますが、2.0の型指定を加えても構いません。

(A)
function xGetCircleArea(nRadius:Number):Number {
	var nCircleArea:Number = nRadius * nRadius * Math.PI;
	return nCircleArea;
}
(B)
function xGetCircleArea(nRadius:Number):Number {
	var nCircleArea:Number = Math.pow(nRadius, 2) * Math.PI;
	return nCircleArea;
}

答2:

(A)
function xGetCircleArea(nRadius:Number):Number {
	if (nRadius < 0) {
		return NaN;
	}
	var nCircleArea:Number = nRadius * nRadius * Math.PI;
	return nCircleArea;
}
(B)
function xGetCircleArea(nRadius:Number):Number {
	if (nRadius < 0) {
		return NaN;
	} else {
		var nCircleArea:Number = Math.pow(nRadius, 2) * Math.PI;
		return nCircleArea;
	}
}

答3:

addEventListener(Event.ENTER_FRAME, xRotate);
function xRotate(eventObject:Event):void {
	rotation += 10;
}

Information

写真:野中文雄

Instructor野中文雄

ソフトウェアトレーナー、テクニカルライター、オーサリングエンジニア、株式会社ロクナナ 取締役

プロフィールを見る

voice

受講頂いた方からのコメントをご紹介しています。

自分で勉強するのは難しいところだったので、大変勉強になりました。

一般企業勤務 正社員

【「複数割」受講チケット最大23%OFFキャンペーン】有効期限はお買い求め日から1年間。募集中の全ての講座にご利用いただけます!!キャンペーンの詳細はこちら

【10,000円キャッシュバックキャンペーン】 2講座受講の方に10,000円のキャッシュバック!!キャンペーンの詳細はこちら

受講料全額無料プレゼント!!

Adobe Creative Suite 4をご購入の方に、67WSを無料で受講いただけるキャンペーンを実施中です!


トップページに戻る

ページ先頭へ戻る