基礎から学ぶActionScript 3.0

[shift]キーで移動ピクセル数を増やす

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
[shit]キーが押されたとき移動ピクセル数を増やすのは、関数で処理することにします。また、条件演算子も学びます。
講師:
08:22

字幕

このペンギンのインスタンスは、 キーボードの上下左右に矢印キーによって、 例えば、左側、 右側、 上、 下と、 動かすことができます。 こうした操作を行うには、 押したキーがどのキーなのか という判定をして、 それによって処理を 切り分けることになります。 条件判定としては、 if ステートメントが一般的ですが、 それ以外にもやり方はあります。 ここでは、switch という構文を ご紹介したいと思います。 この Flash ムービーファイルでは、 if ステートメントによって、 矢印キーの上下左右で、 アニメーションをさせています。 スクリプトは、 このムービークリップシンボルの中に 書いてありますので、 まず、それを確かめてみましょう。 ムービークリップインスタンスを ダブルクリックして、シンボルを開きます。 「シーン1」の横に、 ムービークリップシンボルの アイコンと名前が表示されましたので、 現在、シンボルの編集状態です。 そして、「タイムライン」の scripts のレイヤーに、 スクリプトは書いてありますので、 右クリックで、 「アクション」パネルを開きます。 このスクリプトの内容を 簡単に確認します。 まず、キーボードのイベントをとるには、 stage に対して、 addEventListener で、 KeyboardEvent を登録します。 今回は、「キーを押したら」ですので、 KEY_DOWN というイベントになります。 そして、イベントリスナーを登録し、 そのリスナー関数で、 eventObject を受け取ります。 その eventObject の keyCode というプロパティで、 どのキーを押したかの キーの番号が取れます。 整数ですので、 uint という指定になっています。 そして if 文です。 ここが今回のポイントなんですが、 この変数値、 KeyCode の入った変数値が、 キーボードの左キーと等しい場合、 変数値が、 キーボードの右キーと等しい場合、 変数値が UP と等しい場合、 変数が Down と等しい場合と、 言ってて面倒になりましたけれども、 変数値が左に等しいか、右に等しいか、 上に等しいか、下に等しいか。 「もうちょっと簡単に書けないか?」と、 思われる方もあるでしょう。 実は、その構文が switch の構文なんです。 それをご紹介しましょう。 「ひとつの式の値が、複数の式と比べて、 等しいかどうかを判定する。」 というのが、 switch ステートメントです。 式と言っていますけれども、 必ずしも計算式である必要はありません。 変数1つでも、プログラム上は 式というふうに言いますので、 今回の場合、 KeyCode の入った変数が、 これと これと これと これの どれと等しいですか? という判定ができるわけです。 if ステートメントは if で始まりますが、 switch ステートメントは switch でキーワード、 switch でスタートします。 そして、 if の場合には、 左辺と右辺があって、 等しいかどうかを比べました。 switch の場合には、 左辺に書くべき式、 変数でも結構です。 それを () の中に入れ、 () の中に入れて、 {} の中に今度は、 右辺に来る式なり値なりを置きます。 それを case というキーワードの後に、 右辺に来るべき値、式です。 この式に当てはまる場合、 この、式 0 と式 1 が等しい場合には、 このステートメント 1 が実行されます。 そして次に、いくつでも この case というのが加えられますので、 式 1 式 2 式 3...どれも等しくない。 そして、式 N まできました、と。 これと等しい場合には、 ステートメント N が 実行されるというかたちです。 そして if ステートメントでいう どれにも当てはまらない場合、 else に相当するのが default です。 このようにすると、 if と基本的には同じ形ではあるんですが、 左辺と右辺を分けて、 左辺だけを最初に掲げ、 右辺に来るべき比較する値を 書くことができます。 ただ if と違いますのは、 この式とこの式が等しいかどうかです。 大小比較をしたい場合には、 if を使わないといけません。 ムービークリップシンボルの フレームアクションに戻りました。 この if ステートメントで書いた構文を、 switch ステートメントで 書き換えてみたいと思います。 ただ、いっぺんに4つ条件があると、 ちょっと面倒なので、 とりあえず水平方向だけにしてみましょう。 つまり if 1つと、 else if 1つということになります。 if を switch に置き換えます。 switch ですね。 そして、左辺だけを置くわけですね。 ですから、ここは改行です。 左辺を () で括ります。 そして、その後 {} です。 {} は始まりと終わりだけに 置きますので、 ここも削除して、 上からいきましょうか、 ここは case になります。 case で値、式を置いて、 : です。 そして一段、落としたほうが見やすいので、 一段、落とします。 x 座標を左に -1 します。 ここも case で、 Keyboard.RIGHT そして : で、 インデントを落としましょう。 これで、水平方向の動きが switch 構文で置き換えられました。 ちょっと問題があるんですが、 それを確認してみましょう。 ムービープレビューで確認します。 「制御」>「ムービープレビュー」です。 まず、右矢印を押してみます。 動きますね。 そして、左矢印を押します。 これが動かないんです。 switch 構文を使う時には、 1つ注意が必要です。 SWF のウィンドウは閉じます。 実は switch ステートメントは、 if ステートメントと、 処理の流れに1つ大きな違いがあります。 今、使っている例にならって、 case ステートメントは 2つの場合で考えてみましょう。 switch ステートメントで、 まず、比べるべき式 0 を () の中に入れています。 そして、比べる先の値です。 case ステートメントで、 式 1 がありました。 そして、式 0 と式 1 が一致しない場合は、 式 2 に移ります。 そして、式 0 と式 2 が一致すれば、 ステートメント 2 を実行して、終わりになります。 これは良いです。 ところが、式 0 と式 1 が等しい場合、 勿論、ステートメント 1 が 実行されますが、 その後 if 文のように抜けません。 ということは、 ステートメント 1 を実行した後、 ステートメント 2 も 実行してしまうんです。 そこでどうするかというと、 「ステートメント 1 が終わったら、 処理を抜けろ」という命令を、 名義的に書きます。 それが break です。 こうすると ステートメント 1 を 実行した後、抜けて、 switch の外に出ます。 case 2 の場合には、 case の式 2 の場合には、 ステートメント 2 を実行した後、 case がありませんので, break を入れなくても大丈夫なんですが、 こういう場合も後で 追加するかもしれませんので、 念のため、 入れておいたほうがいいでしょう。 ムービークリップのフレームアクションで、 まず、水平の動きを完成させましょう。 break を入れるということですね。 そして、こちらも、 今は入れなくても大丈夫なんですが、 すぐに y が入りますので 入れておいたほうがいいですね。 改めて、ムービープレビューで確認します。 「制御」>「ムービープレビュー」 まず、右側は先ほどもうまくいきました。 右矢印を押します。 次、左矢印です。 break を入れましたので、 ちゃんと動きますね。 これでまず、水平方向は完成しました。 SWF は閉じましょう。 垂直方向の動きを加えましょう。 もうここをコピーしてしまえばいいですね。 「コピー」をして、 「ペースト」します。 Keyboard.UP UP は y 座標を - (マイナス)します。 それから DOWN ですね。 これは y 座標を + (プラス)します。 break もちゃんと入っていますので、 これでいいでしょう。 ムービープレビューで、 完成を確かめましょう。 「制御」>「ムービープレビュー」です。 一応、念のため、右矢印、左矢印。 そして、上向き矢印、下向き矢印。 上下左右全部動きました。 これで完成です。 switch ステートメントについて おさらいにしましょう。 switch ステートメントは、 まず、キーワードは switch で始まり、 比べるべき式を () に入れます。 これが、かの case に設定した式と 等しいかどうか比べられます。 そして {} の中に、 case ステートメントを書き込みます。 この式と、比べたいものを case の後に続けて : ですね。 そして、行いたい処理を入れます。 if ステートメントと違って、 1つ重大な注意点は、 break を入れないと、処理を抜けません。 同じ要領で case ステートメントを どんどん繋いでいけば、 switch ステートメントの後の式が case と、どれと等しいか というふうに比べられて、 見た目は非常にスッキリすると思います。 以上が if ステートメント以外の 条件判定としてご紹介しました switch ステートメントの使い方です。

基礎から学ぶActionScript 3.0

このコースではFlashのActionScript 3.0を初めて学ぶ方を対象に、ActionScriptの基礎から実際にプログラミングをするところまで学習していきます。簡単なスクリプトによるオブジェクトの操作の仕方から始まり、変数や関数といったプログラミングの基礎、そしてインタラクティブなコンテンツの作成まで詳しく解説いたします。

6時間30分 (49 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 3,990
発売日:2014年01月16日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。