Skip to main content
Lively_image15A8
Inspiring
March 29, 2018
Answered

グローバルスクリプトに変数でインスタンスを代入することはできますか?

  • March 29, 2018
  • 2 replies
  • 1246 views

みなさん、よろしくお願いします。

いつも迷った時に参考にさせていただいています。

Animate 初心者です。javascriptも初心者です。

1週間前から触ってみています。flashも触ったことがありませんでした。

使い方がわかっていないため意味不明な質問なのかもしれませんが、そのあたりを加味していただけますと大変助かります。

Adobeフォーラムの「質問テンプレート」を使用して質問させていただきます。

①OSとそのバージョン   Windows7 Pro SP1 64bit

②製品とそのバージョン Animate CC 2018 (18.0.1(ビルド115))

③トラブルの内容

内容としましては、インスタンスを変数に入れたいのですが、各フレームごとにインスタンスを変数に代入するのは面倒に感じまして、

Animate CC 2018 にはグローバルスクリプトがあるため定義的にはこちらが正しいと思い、同じ内容をカット&ペーストするとエラーになります。

検証1

ball_mc1=this.ball_mc; //※1

console.log(ball_mc1);

グローバルのスクリプトやインクルードはHTML側に記載されているのがわかりましてthisが違うと思うのですが、

どう違うのかjavascriptがよく分からなくて困っています。

検証2

e-ラーニング動画などを参考にして、exportRootを使用したのですがやはりエラーになります。

ball_mc2=exportRoot.ball_mc; //※2

console.log(ball_mc2);

これはexportRootが記載されている関数より先に、インスタンスの変数が記載されているため、記載順序が悪いのでしょうか?

④エラーメッセージ

※1、※2どちらも、

Uncaught ReferenceError: exportRoot is not defined at ▲▲▲▲.html

chromeでチェックしました。

以上となります。

This topic has been closed for replies.
Correct answer Fumio Nonaka

グローバルスクリプトはCreateJSの初期化より先に実行されます(「[グローバル]の設定はHTMLドキュメントに加えられる」参照)。それは、Animateのインスタンスが生まれる前です。ですから、変数には入れられません。

また、フレームの変数は、グローバルや他のフレームから直に参照することもできません。これは、たとえば第1フレームで宣言したのと同じ名前の変数をうっかり第100フレームで使ってしまっても、上書きになったり互いに影響を及ぼさないための仕組みです。

つまり、面倒でも「各フレームごとにインスタンスを変数に代入する」のが、Animateの仕組みにおける正しい操作です。

2 replies

Fumio Nonaka
Community Expert
Fumio NonakaCommunity ExpertCorrect answer
Community Expert
April 10, 2018

グローバルスクリプトはCreateJSの初期化より先に実行されます(「[グローバル]の設定はHTMLドキュメントに加えられる」参照)。それは、Animateのインスタンスが生まれる前です。ですから、変数には入れられません。

また、フレームの変数は、グローバルや他のフレームから直に参照することもできません。これは、たとえば第1フレームで宣言したのと同じ名前の変数をうっかり第100フレームで使ってしまっても、上書きになったり互いに影響を及ぼさないための仕組みです。

つまり、面倒でも「各フレームごとにインスタンスを変数に代入する」のが、Animateの仕組みにおける正しい操作です。

Lively_image15A8
Inspiring
April 11, 2018

Fumio Nonaka様、

ご返信ありがとうございました。 eラーニングも拝聴させていただきました。

グローバルスクリプト概念はeラーニングで一応理解していたのですが、。

読み込む前ですから仕方ないですよね。

Animate CCの次機種で改良希望したいですね。

グローバルインクルードでの並び替えを改良し、他のライブラリなどの様に、<script>やCreateJSの読み込み位置を並び替え可能にするとか。

今回は、HTMLの<script>の末尾に書き込む(パブリッシュ設定で上書き禁止して)か、フレームスクリプトに書きます。

ありがとうございました。

Lively_image15A8
Inspiring
March 29, 2018

すみません、間違いがありまして追記させてください。

エラーメッセージですが、

※1は undefined でした。大変失礼しました。