![]()
野中文雄の数学的思考で取り組むActionScript中級講座
スクリプティングには、数学的思考が必要だとよくいわれます。そのとき誤解されがちなのは、公式を探したり覚えたりして、それをスクリプトに当てはめればよいと思い込んでしまうことです。話はそれほど安直ではありません。けれども、シンプルです。
大切なのは、基本的な仕組みを知り、論理的に考えることです。やみくもに調べたり、暗記したりするよりも、まず理解することが必要なのです。本講座では、数学の公式も紹介しながら、論理的なスクリプトの組立て方を、実習で学んでいきます。
このコンテンツはJavaScriptをONにする必要があります。
※こちらは円運動の式を表したサンプルです。
数学の知識については、高校文系程度で結構です。スクリプトはActionScript 3.0を使い、イベントリスナーの扱いや条件判定を理解していることが前提となります。
受講者全員に野中氏の書籍『 ActionScript 3.0プロフェッショナルガイド 』をテキストとしてプレゼントいたします。
講座レベル![]()
■カリキュラム概要
キーボードによる操作とArrayおよびObjectクラス
- 条件判定の最適化
- 2次元配列を用いた処理の選択
三角関数を使って楕円軌道のアニメーションを作成する
- 三角関数とバネおよび円・楕円運動
- 遠近法
変換行列と3次元の回転
- 行列と座標変換
- 3次元空間における回転
*カリキュラムの進度および内容は、受講者全員の理解度・習得度によって変更される場合があります。
- 使用アプリケーション
- Adobe Flash CS4
- 講師
- 野中文雄
- テキスト
- 『 ActionScript 3.0プロフェッショナルガイド 』
- 定員
- 6名
- 対象
- ActionScript 3.0のイベントリスナーの扱いを学習された方。
「 林拓也のActionScript 3.0入門講座(後半) 」を受講された方。 - 料金
- 29,800円(税込み)
■受講対象レベルチェック問題
*全問正解が受講の必須条件ではなく、受講対象レベルの具体的な目安とお考えください。
問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の型指定を加えても構いません。
function xGetCircleArea(nRadius:Number):Number {
var nCircleArea:Number = nRadius * nRadius * Math.PI;
return nCircleArea;
}function xGetCircleArea(nRadius:Number):Number {
var nCircleArea:Number = Math.pow(nRadius, 2) * Math.PI;
return nCircleArea;
}答2:
function xGetCircleArea(nRadius:Number):Number {
if (nRadius < 0) {
return NaN;
}
var nCircleArea:Number = nRadius * nRadius * Math.PI;
return nCircleArea;
}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;
}







