基礎から学ぶActionScript 3.0

配列を使った矢印キーによるインスタンスの移動-前編-

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

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
入れ子の配列と配列アクセス演算子を組合わせることで、キーコードによって異なるプロパティに指定した値が与えられます。このテクニックがこの章のポイントです。
講師:
07:05

字幕

NaN というのは 頭文字を取ってまして、 Not A Number なんですね。 日本語に訳すと「数字じゃありません」 ということなんですが、 ちょっと「数字じゃありません」 というのは、当たっていません。 正確に言うならば、 「計算できません」という値です。 典型的には、 0 を 0 で割り算した場合、 出てくるのが NaN です。 数学・算数では、 「0 で割り算しちゃいけません」と、 言われますね。 まさにそういった場合の、 エラーではないですが、 エラーに近いような値ということで、 それを x プロパティ(ペンギン)の 座標に入れてしまうと、 とんでもないことが 起こるということなんです。 ここでは if 文を使うことになります。 配列を使うのですが、 ここの if 文は勘弁してください。 if で、この値が ちゃんとした数字であること、 あるいは NaN ではない事を確かめて、 そして、ちゃんとした値であったら、 NaN でなかったら、 この処理を実行すればいいですよね。 ここでどういう条件を 入れたらいいかということなんですが、 このままテストしてみましょう。 ムービープレビューを確かめます。 「制御」>「ムービープレビュー」です。 まず、左矢印、問題ありません 右矢印キー、問題ありません。 さて次は、上矢印、押してます。 さっきの様に端っこに行きません。 下矢印、 OK です。 つまり、左右の矢印キー以外は、 変なことが起こらなくなっています。 この理由をご説明しましょう。 SWF は閉じます。 if ステートメントの条件に、 変数1個をポンっと放り込んで、 なんで動いてしまったんでしょうか? この中には条件を入れるはずですね。 勿論、人間から見ると、 例えば、この値が何かに等しいとか、 大きいとか小さいとか、 そういったものを 条件と考えるわけなんですが、 この ActionScript は、実は、 人間の様なそういうことは考えていません。 結果として、 true か、 false か、 どちらかに変換するという 処理を行っています。 ですから、何かと等しいとか、 大きい小さいということから見れば、 人間から見て、 それがあっていれば true あっていなければ false という 変換をするんですが、 人間から見て条件に見えなくても、 ともかく文法的に間違っていない限り、 true か false かに絶対変換します。 頑張って変換するんです。 その結果、 先ほどの NaN というのは false 条件が当てはまらない場合に返還される false に変換されます。 ですから NaN の場合には この処理が行われないということです。 そして「じゃあ、数字が 入っている場合は?」 結果としてみれば、 数字が入っていれば、 これは true というふうに判定されます。 もう少し厳密に申し上げましょう。 if ステートメントのような 条件に入れた値というのは、 条件として、アクションスクリプトが 値を評価するという、 そういった処理になります。 具体的には true か false か、 これらを Boolean 値とか、 ブール値というんですけど、 それに変換するわけです。 その場合の変換結果、 いくつか主なものを出してみました。 まず undefined これ見たことはないでしょうけれども、 実は、配列から 空っぽのエレメントを取り出すと、 undefined という値になってます。 でもさっき、キーに設定したのは NaN でしたね。 その undefined を Number で指定した変数に入れると、 NaN になるんですね。 なので NaN になったんですが、 どちらも条件として指定すると、 false になります。 数字が入っていれば true として 評価されたようなんですが、 厳密にいうと、 0 は false です。 0 以外の数値、先ほど 配列に入れたのは、 1 と ‐1 ですね。 ですから、これは true として判断されます。 ムービークリップシンボルの フレームアクションに戻って、 もう一度、確認しましょう。 押したキーの KeyCode を変数に入れます。 そして、その KeyCode の インデックスの値を配列から取り出した時、 左右の矢印キーであれば、 ‐1 か 1 が取り出されて、 それは 0 ではありませんので、 true と評価され、 条件に合っているのと同じですね。 この中の処理が行われます。 もしも、配列に値がなければ、 一旦これで取り出されるのは、 Undefined という値なんですが、 key という変数に Number 型を指定してあります。 そうすると、入れた時に NaN という、 あの変な値になるわけですね。 そして、その NaN という値は 条件として、 Boolean 値として評価すると、 false となるので、 その場合には、この中の処理が 行われないというということで、 左右の矢印の動きが、きちんと 実現されたということになるわけです。 次に、上下の矢印キー、 つまり y 座標の移動を 加えたいわけですが、 そのためにはどうしたらいいかというと、 今のところ配列には、+1 か ‐1 かという 数値しか入っていません。 LEFT の時は ‐1 と なってるわけですが、 y も入れようとすれば、 LEFT の時は、 x を -1 まだ書いていませんが、 Up の時は y を -1 というように、 単に数値だけではなく、 x か y かという、 区別も入れなければいけません。 そのために、配列の入れ句を 利用しようと思います。 ちょっと簡単な例でご説明しましょう。 この Flash ムービーファイル fla ファイルには、 ムービークリップインスタンスが 1つだけ置いてあります。 そして、名前は my_mc になっています。 まだ、スクリプトは どこにも書かれていません。 このメインタイムラインで スクリプトを書いてみましょう。 scripts のレイヤーで、 まだ何もありませんが、 右クリックで、 「アクション」パネルを開きます。 ムービークリップインスタンス my_mc の x 座標を 右に 100 ピクセル動かしたいとします。 そしたら、これでいいですね。 ムービープレビューを確かめてみます。 「制御」>「ムービープレビュー」です。 右に移動しました。 SWF は閉じます。 このプロパティの x という文字と、 文字列ですね。 100 という数値を変数に入れて、 [ ] (ブラケット)アクセスで 書き直してみましょう。 まず、プロパティですね。 myProp にします String です。 ここにプロパティの 名前である x という文字を入れます。 それから、動かす値ですね。 無精をして n にしておきます。 Number です。 100 としたら、 [ ] アクセスがどうなるかというと、 ここを [ ] 角括弧の迎え合わせにして、 そこに変数名 myProp を 入れてあげると、 myProp から文字列 x あ、ちょっとずれていますね。 x を取り出して、 x プロパティにアクセスします。 そして、ここは n ということで、 ムービープレビューを確かめますと、 「制御」>「ムービープレビュー」で、 先ほどと同じ動きになります。

基礎から学ぶActionScript 3.0

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

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

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

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

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