基礎から学ぶActionScript 3.0

タイムライン変数とローカル変数

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

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
関数の中に宣言した変数が、ローカル変数です。ローカル変数は、関数の実行が済むと、メモリから消えます。タイムライン変数が、そのインスタンスに保持されるのと異なります。
講師:
10:38

字幕

変数は、 var キーワードで宣言します。 var 宣言を、 function (関数)の中で 行った変数を、 「ローカル変数」と呼びます。 そして、関数の外で var 宣言をした 変数とは区別されます。 このローカル変数の 意味と役割についてご説明します。 このタイムラインに配置した ムービークリップインスタンスは、 タイマーの針のように、 1秒刻みで 回転します。 ただし、そのアニメーションは、 インスタンスをクリックした時、 スタートするように 設定してあります。 まずは、ムービープレビューで アニメーションを確かめてみましょう。 「制御」>「ムービープレビュー」です。 インスタンスをクリックすると。 動き出してます。 確かに1秒刻みで動いています。 ただ、初めにちょっと、 違和感を覚えた方もあるかもしれません。 もう一度、確かめてみましょう。 「制御」>「ムービープレビュー」 そして、インスタンスを すぐにクリックせずに、 しばらく待ちます。 そのうえで、クリックして、 初めに回転する角度に ご注目ください。 かなり大胆に回転していますね。 これは、回転の角度を定めるのに、 getTimer という関数を 使っていることに起因します。 スクリプトを確かめてみましょう。 SWF のウィンドウは閉じます。 スクリプトは、メインタイムラインには 書かれていません。 全て、この針のシンボルの中に 設定してあります。 では、このシンボルを ダブルクリックして開けます。 「シーン1」の右側に、 Bar というシンボル名が表示されました。 現在、シンボルの編集状態、 シンボルの中を見ています。 その、 scripts のレイヤーの キーフレーム、 スクリプトが書かれていますね。 右クリックで、 「アクション」パネルを開きます。 スクリプトを確認しましょう。 まず初めに addEventListener イベントリスナーを登録しています。 登録の対象は、 今、シンボルを開いていますので、 このシンボルのインスタンスです。 そして、イベントは、 MouseEvent.CLICK です。 「このインスタンスをクリックしたら」 ということですね、 実行するイベントリスナーの 関数は、 xStart ここに定義されています。 クリックされたら、また、 addEventListener です。 このインスタンスにお願いします。 ENTER_FRAME 「描画が更新されたら」、 つまり、アニメーションの設定ですね。 「xRotate をやりましょう」 と、 xRotate という リスナー関数がこちらです。 getTimer 先ほど言いましたね、 Flash Player が再生を開始してからの 経過ミリ秒数を返します。 ミリ秒数ですから、 1000 で割れば 秒数になります。 その値を変数に入れて、 小数点以下を Math.floor メソッドで 切り捨てます。 そして、1秒あたりの回転角 6 を掛けたうえで、 このインスタンスの rotation プロパティ 回転角に定めます。 getTimer という関数の使用を、 もう一度、確認してみましょう。 時間の経過を調べる getTimer 関数は、 Flash Player がスタートしてからの 経過時間を、ミリ秒で返します。 クリックしてからの時間じゃないんです。 ですから、 Flash Player を再生する。 つまり、ムービープレビューを見て しばらく放っておくと、 getTimer の関数の値は どんどん どんどん増えていくわけです。 そして、クリックして アニメーションを開始すると、 その、十分経過したミリ秒数の 角度に設定されますので、 いきなり角度が ポンと増えてしまう、 ということになるわけです。 では、インスタンスをクリックした時に、 12 時の位置から秒針がスタートするには どうしたらいいかというと、 クリックしたときのミリ秒数を 覚えておけば良いですね。 そして、角度を設定する時、 その覚えておいた値を引き算すれば、 クリックしてからの 経過時間が分かります。 では、クリックしたときのリスナー関数、 xStart に 変数を加えて、 クリックした時の時間を覚えておきましょう。 Start とします、 nStart Number ですね。 そして、 getTimer 割ることの、 秒数ですから、 1000 と。 これをコピーしてしまいましょう。 Ctrl キー あるいは、 Mac は Option キーを押しながら、 ドラッグすると、コピーになる。 そして、 nStart という値を、 角度を設定するときに 引き算してあげればいいでしょう。と、 この考え方は正しいです。 正しいですが、この書き方では 意図通りの動作はしません。 「アクション」パネルは 一旦、閉じて、 ムービープレビューを 確かめてみましょう。 「制御」>「ムービープレビュー」です。 インスタンスをクリックしても、動きません。 その前に「コンパイルエラー」のパネルに エラーが表示されています。 「未定義のプロパティ nStart へのアクセスです。」 「未定義のプロパティ」というエラーは よく見るんですが、 要するに、「nStart なんて知りません」 という意味です、 さて、何が問題なんでしょうか? SWF は一旦、閉じましょう。 そして、「タイムライン」に戻ります。 シンボルの中に定めたフレームアクションを、 もう一度、開いて 確認します。 スクリプト用のレイヤーの キーフレームから、 右クリックで「アクション」を開きます。 どう直したらいいかを、 先にお見せしましょう。 この var nStart : Number これは、 function の 外に出します。 最後には ; で、 ステートメントはここでお終い。 つまり、宣言だけ行って 値は入れない、というかたちになります。 値を入れるのは、ここでいいので、 変数の名前、 変数をここに コピーして持ってきます。 「アクション」パネルを 一旦、閉じて、 改めて、ムービープレビューを 確認しましょう。 「制御」>「ムービープレビュー」です。 今度は、コンパイルエラーは出ていません。 しばらく待ちましょう。 もうそろそろ、いいでしょうか? 一周しちゃうといけませんのでね。 クリックします。 ちゃんと、頭から再生します。 これが ローカル変数というものの 機能なんですが、 function の中で 定義したものを「ローカル変数」、 function の中で var 宣言した変数を 「ローカル変数」と言い、 function の外で var 宣言した場合と 区別されます。 もう一度、スクリプトを見て ご説明しましょう。 「アクション」パネルを もう一度、開きましょう。 scripts のレイヤーの キーフレームを 右クリックして、 「アクション」パネルを開きます。 変数の宣言を function の外で行った場合、 変数というのはメモリなんですが、 この外で var 宣言した変数は、 このムービークリップインスタンスに メモリされます。 スクリプトを書いている場所ですね。 スクリプトは このシンボルの中に 書いていますから、 メモリ場所は、このシンボルの インスタンス ということになります。 ところが、これがそうですけれども、 function の中で 宣言した変数というのは、 このインスタンスにはメモリされません。 function を実行している間だけ 特別にメモリが確保され、 そこに入ります。 そして、 function の実行が終わると 消えてしまうんです。 ですから、ここで設定した変数の値が もし、中で var 宣言されていると、 xStart という関数の実行が 終われば消えてしまいます。 そして、ここで nStart という変数に アクセスしようとすると、 もう消えてしまってますから、 ですから、エラーで、 「そんな変数 知りません。」 と出てきたわけです。 ですから、その function の 中だけで利用する変数であれば、 いいんですけれども、 その外、あるいは 別の関数からも利用する場合には、 宣言の場所、 変数の宣言の場所は、 関数の中ではいけません。 関数の外でないと いけないんですね。 関数の中で宣言された変数のことを 「ローカル変数」と言います。 外で宣言された関数については、 いくつか言い方があるんですけれども、 ムービークリップの中に メモリされるということで、 ムービークリップのことを タイムラインと言ったりもするものですから、 「タイムライン変数」という 言い方をよく使います。 ローカル変数と タイムライン変数の違いを、 しっかり区別するようにしてください、 ローカル変数について、まとめましょう。 ローカル変数というのは、 関数の中で var 宣言された変数です。 その特徴として、 関数が実行されている間だけ メモリに残り、 実行が終われば 消えてしまう ということです。 それから、関数の外から アクセスすることができません。 そういうローカル変数を使うと 何が良いのかと言いますと、 実行が終われば、関数が実行し終われば メモリから消えますから、 メモリを無駄に使うことがありません。 つまり、エコですね。 それから、もう1つ、 変数をたくさん使うようになってくると、 変数がぶつかってしまうと、まずいですね。 あるいは、変数を同じ名前を使っているのを、 気付かずに使ってしまって、 うっかり値を書き換えてしまった。 ということがあり得ます。 ローカル変数は、 関数の外からアクセスできませんから、 そういう重複を気にせずに済みます。 うっかり外から書き換えられることが無い、 という安心感もあるわけですね。 ですから、関数が実行し終わったら、 消えてしまっていい変数というのは、 ローカル変数に 宣言した方がいいでしょう。 逆に、先ほどの クリックしたときの秒数。 あれは消えてしまったら まずいですよね。 そういう場合には、 ローカル変数ではなく、 関数の外で var 宣言をする ということです。 以上が、ローカル変数の意義と、 その使い方でした。

基礎から学ぶActionScript 3.0

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

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

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

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

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