基礎から学ぶActionScript 3.0

変数値を設定する関数の定義

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

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
ムービークリップシンボルのフレームアクションの変数値を書替えたら、すべてのインスタンスが同じ値になってしまいます。フレームアクションに関数を定義して、自らの変数を設定すれば、動作が外部に依存せず、シンボルがパーツ化されます。
講師:
09:21

字幕

このムービークリップインスタンスは、 マウスポインターの後を、 イーズアウト、 つまり、減速しながら追いかけます。 インスタンスの数を増やし、 インスタンスごとに、 この減速率、置いて行かれ方ですね、 その度合いを変えてみたいと思います。 マウスポインターの後を追いかける ムービークリップアニメーションの スクリプトは、 シンボルの中に書いてあります。 今、同じシンボルから インスタンスを3つ置いてあります。 シンボルは、 この Pen という名前です。 では、スクリプトを代表して、 この真ん中のペンギンで 開いてみましょう。 ダブルクリックで、 シンボルの編集状態にします。 「シーン 1」シンボル名、 ペンギンの Pen の名前が出ましたので。 シンボルの編集状態になりました。 スクリプトは「タイムライン」、 scripts のレイヤーの キーフレームに 書いてあります。 右クリックで 「アクション」パネルを開きます。 フレームアクションの中身を 簡単に確認しましょう。 まず addEventListener ですが、 これは、このシンボルのペンギンに対して、 addEventListener お願いしています。 アニメーションですから、 イベントは Event.ENTER_FRAME そして、リスナー関数を登録します。 リスナー関数がこちらで、 x y 座標 それぞれについて、 マウスポインターの座標、 これは、このインスタンス、 ペンギンから見た座標です。 その座標を、まるまる、 そのまま足し込んでしまうと、 きっちりと、このインスタンスが マウスポインターに 追いついたというかたちになります。 そこで、それに対して、 nDeceleration という 変数を宣言し、 今、 0.2 という数字が 入っています。 それを掛け算してるために、 ペンギンから見た、インスタンスから見た マウスポインターにすぐに追いつかず、 0.2 だけ、 割合の 0.2 分(ぶん)だけ 追いつく と、 それをくり返しますので、 だんだん だんだん 近づいていくんですけれども、 その近づく距離が少なくなっていって、 減速をする。 そういう処理になっています。 これからやりたいことは、 3つのペンギンそれぞれについて、 この変数の値、 減速率を変えようということです。 では今、真ん中のペンギンのシンボルを 開いているわけですから、 これを少し数字を上げます。 数字を上げるほど、速く近づきます。 これで、結果がどうなるでしょうか? 「アクション」パネルは一旦、閉じて、 シンボルの編集状態から、 メインタイムライン、 「シーン1」に戻ります。 そして、ムービープレビューを 確かめてみましょう。 「制御」>「ムービープレビュー」です。 あっという間に3つのペンギンが くっついてしまい、 どうがんばっても剝がれないですね。 つまり、全て減速率が 同じになってしまっているんです。 SWF を 閉じます。 確認のため 真ん中ではなくて、 左側のペンギン、 ダブルクリックで 開いてみます。 シンボルの編集です。 シンボルが Pen という名前、 シーンの右に出てきましたので、 シンボル編集状態になっています。 右クリックで、 「アクション」パネルを開けます。 0.6 に変わってますね。 「アクション」パネルを閉じましょう。 「シーン1」に戻ります。 なぜかといえば、 このインスタンスのシンボルは、 ひとつだからです。 つまり、これをダブルクリックすると、 シンボルが開きますが、 3つのペンギン、いずれも、 このシンボルの 共通のデータを見ています。 「アクション」パネルを開けます。 ですから、ここで直接数字を 書き換えてしまっては、 ダメだということになるわけです。 どうすればいいかというと、 このスクリプトの中で、 直接、値を数値で代入するのでなく、 値を設定するための関数を 別に用意します。 そして、その関数の中で、 この変数値 nDeceleration の値を 設定するというかたちにし、 例えば、メインタイムラインから その関数を呼び出して、 3つのインスタンス、それぞれについて、 違う値を設定するというかたちにします。 では、関数を加えます。 この後に、 function(){} これにはショートカットがありました。 Escキー 1 回、 F キー 1 回、 N キー 1 回。 これで Esc + F + N とタイプすれば、 function(){} が入ります。 関数名はそうですね、 xInitialize としましょう。 「初期化」です。 Initialize と、 そして、この関数は、 変数に設定するための 値を受け取ります。 nValue とします。 数値ですから Number です。 そして : の後は void とします。 内容は、 ここは先ほど、値を消しましたので、 = の後を消しましたので、 変数宣言だけになっています。 この関数の中で値を設定します。 = で、 引数に受け取った値を そのまま代入します。 この新たに定めた関数は、 メインタイムラインから、 ペンギンのインスタンス、 それぞれについて呼び出します。 そうすれば、それぞれについて、 別の値が設定できる ということになるわけです。 では一旦、「アクション」パネルは閉じて、 メインタイムラインのほうに移りましょう。 「シーン1」です。 インスタンス3つに、 それぞれ異なった名前を付けます。 「プロパティ」インスペクターを 開いておいて、左から、 pen 0 1 2 にしましょう。 pen0_mc と、 次が pen1 です。 pen1_mc 最後が pen2_mc プログラムでは、カウントをする時、 0 から数字を スタートさせることが多いです。 そして、まだスクリプトのレイヤーが ありませんので、新規レイヤーを作り、 スクリプトらしい名前を付けて、 鍵をかけておきます。 メインタイムラインのキーフレームで 「アクション」パネルを開きます。 右クリックで「アクション」です。 では、スクリプトを書いていきます。 まず pen0_mc ですね。 xInitialize コピーしといたほうが、 よかったような気もしますね。 タイプミスの可能性があります。 では、ここは 0.6 とします。 もう、あとはコピーしてしまいましょう。 2つですね。 1個、2個とコピーし、 pen1_mc pen2_mc だんだん、スピードを 遅くします。 付いてくる、 置いて行かれ方が大きくなるという 言い方をしてもいいですね。 では一旦、「アクション」パネルは閉じて。 ムービープレビューで確認しましょう。 「制御」>「ムービープレビュー」です。 スピードが違いますね。 めいっぱい広げたほうが おもしろそうですので、 最大化します。 ついてくる速度が、 ペンギンによって違っています。 SWF を閉じましょう。 では、おさらいします。 「ライブラリ」で、 シンボルをダブルクリックし、 編集状態にします。 そして、 scripts のレイヤーの キーフレームで右クリック。 「アクション」パネルを開きます。 1つのシンボルから、複数のインスタンスを タイムラインに配置した時、 目に見えるビジュアルエレメントはもちろん、 スクリプトもすべて共通になります。 ですから、インスタンスによって 値を変えたいという場合に、 直接、このスクリプトの中に 値を書き込むということはできません。 その場合には、関数を定義して、 その関数の中で値を定めるようにし、 その関数を別の場所、 メインタイムラインが良いと 思うんですけれども、別の場所から、 それぞれのインスタンスに対して 呼び出し、 渡す値を別々にすれば、 インスタンスごとに 違った値が設定できるということです。 以上、同じシンボルから 複数のインスタンスを配置した時、 関数を定めて、それぞれに違った値を 設定するという方法でした。

基礎から学ぶActionScript 3.0

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

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

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

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

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