基礎から学ぶActionScript 3.0

ifステートメント

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

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
インスタンスの位置がステージ右端を超えたら、左端に移動したいと思います。そのために、条件判定のifステートメントを学びます。
講師:
07:39

字幕

スクロールするインスタンスが ステージの端を越えたら、 反対側の端から現れて、 スクロールを続けるようにしてみます。 その場合には、インスタンスの位置が ステージの端を越えたかどうかという、 条件判定が必要になります。 ですから、条件判定の構文についても 解説いたします。 では、 SWF は 閉じましょう。 今、開いている Flash ムービーは、 水平にスクロールする部分まで 書いてあります。 まだ、反対側から現れるという処理が、 加えてありません。 スクリプトは、ムービークリップシンボルの 中に書いてありますので、 ダブルクリックして、開きましょう。 「シーン 1」 の中で、 Pen という ムービークリップシンボルが開いています。 スクリプトは、スクリプト用のレイヤーの キーフレームに書いてありますので、 「アクション」 パネルを開けます。 ごくシンプルな、 アニメーションのスクリプトです。 まず、このインスタンスに対し、 addEventListener の メソッドを呼び出して、 アニメーションは、 Event.ENTER_FRAME の Event です。 そして、リスナー関数を登録しています。 リスナー関数はこちらで、 単純に x 座標に対し、 変数値を加算、 足し込んでいます。 この変数値は 5 に なっていますので、 毎フレーム 5 ピクセル、 右に移動することになります。 ステージの端を越えたら、 反対側に移るという処理をするには、 ステージの端を越えたかどうかという、 条件判定が必要になります。 条件判定の構文をご説明しましょう。 条件の判定は、 if ステートメントで処理します。 まず、キーワード if で始め、 () の中に、 調べたい条件を加えます。 そして、その条件が 当てはまった場合に処理したいことを、 そのあとに続く {} の間に書きます。 また、ステージの右端を 知りたいわけですが、 「右端」というプロパティはありません。 けれども、幅と高さが、 幅の方が stage.stageWidth 高さが stage.stageHeight で 分かります。 左端が座標 0 ですので、 結局、右端は、 この stage.stageWidth で、 調べることができるということです。 シンボルのフレームアクションに 戻りました。 条件判定の処理を 加えたいと思います。 まずは変数に、 ステージの幅を入れときましょう。 ステージの幅なんですが、 使い方としては、 ステージの右側として使いますので、 nStageLeft という変数名にします。 Number で、 stage.stageWidth ですね。 StageLeft ではないですね、 StageRight です。 そして、条件判定の処理を加えます。 if でスタートし、 () があり、 {} () の中に条件です。 インスタンスの x 座標が ある値を加えたら、 これは今、変数に入れた、 ステージの右端ですね。 右端を越えたらと、 コピーを持ってきます。 この不等号は、 中学の数学で習ったとおりです。 x の値が、 もし、この値よりも大きくなったら、 この中の処理を行ないます。 左端に持って行きたいですね。 ということで、 x を、 左端は 0 でした。 0 にすればいいかというと、 ちょっと考える必要があります。 何が問題なのかを示すために、 サンプルを用意しました。 今のスクリプトを書いたインスタンス、 3つ並べています。 シンボルはすべて共通です。 そして、等間隔で並べてあります。 では、ムービープレビューで、 どうなるか見てみましょう。 「制御」>「ムービープレビュー」です。 スクロールしますね。 そして、右端を超えると、 確かに、左端に行っています。 けれども、間隔に注目してください。 ちゃんと最初、 間隔を等しくそろえてあったのに、 バラバラになっています。 時には重なったり。 なぜ、こういうことが 起こるかということです。 右端を越えたら左端へ、 0 に持って行く という風に処理しました。 右端の越え方というのは、 5ピクセルずつ動いてますから、 いろんな越え方が考えられますね。 1ピクセルしか越えない場合でも、 左端 0 に行きます。 5ピクセル越えた場合でも、 0 に行きます。 1 ピクセルしか越えない人は、 得してますね。 5ピクセル越えて、 ようやっと端に行った人は、 遅れてしまいます。 ということで、単純に 0 に持って行くと、 越え方がバラバラなために、 間隔が揃わなくなってしまうんです。 これはまずいですね。 では SWF を閉じます。 サンプルから、シンボルの フレームアクションに戻りました。 もし、端を越えた場合に、 単純に 0 にしてしまうということですと、 問題がありました。 では、どうしたらいいでしょうか? 同じ値を差し引けばいいんです。 そうすれば、5を越えた人は 5を越えたなりに、 1しか越えない人は 1越えたなりに、 間隔がずれないように 移動することができます。 では、具体的に差し引く値はというと、 ステージ幅ですね。 StageRight という名前になっていますが、 実体はステージ幅ですので、 この値を差し引きます。 差し引く場合には、 -= という記号を使います。 これが、差し引く演算記号ですね。 では、アクションパネルは一旦閉じて、 メインタイムラインに戻りましょう。 「シーン1」をクリックです。 サンプルと違いまして、 インスタンスが1個しかありませんが、 間隔の問題は、 もう既に解消されていますので、 このまま、 ムービープレビューを確かめましょう。 「制御」>「ムービープレビュー」です。 端を越えると、 反対側の端に現れて、 スクロールがずっと続くことになります。 では、今回使った条件判定について、 おさらいしましょう。 SWF を閉じます。 条件判定は、 if というキーワードを使った if ステートメントで書きます。 キーワード if の後、 () の中に条件を定めます。 大小比較の場合には、 不等号を使います。 そして {} の中に、 条件が当てはまった場合、 満たされた場合と、処理を書くと、 条件に当てはまった時のみ、 その {} の中の 処理が行なわれます。 また、合わせて、 ステージの幅と高さ、 高さは使いませんでしたけれども、 幅は stage.stageWidth 高さは stage.stageHeight という、 プロパティもご紹介しました。 条件判定を使ったアニメーションの 処理について、ご説明しました。

基礎から学ぶActionScript 3.0

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

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

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

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

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