トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     タイムライン上の関数の参照ができない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
空野大二郎
Åê¹ÆNo.13001
投稿日時: 2004-12-3 10:45
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: タイムライン上の関数の参照ができない
 まいど。
 xStaffさん、解決おめでとうございます。

 ターゲットパスが存在しないのに、movieclipの存在だけある状態を
作り出せなくて、てっきり「ゆーれーのしわざだ!」とか、非科学的な
妄想にとりつかれていました。
引用:
xStaffさんは書きました:
onLoadの中に

trace([this.target_mc, typeof this.target_mc]);
を記述したところ、

,movieclip
と出力されました。


 野中さん、回答してくれてありがとうございました。


----------------
空野 大二郎 アニメーター作家
桜の道

野中文雄
Åê¹ÆNo.13003
投稿日時: 2004-12-3 13:30
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: タイムライン上の関数の参照ができない
Bingo! これですっきりしました。
引用:
xStaffさんは書きました:
>つまり、LoadVars.onLoadメソッド呼出し時に、ターゲットのタイムライン(target_mc)が存在しない可能性はありませんか?

のご指摘の箇所が問題でした。

フレーム移動の必要があったら、LoadVars.onLoadメソッドに設定したコールバック関数の最後に挿入すればよいですね。
引用:
関数aを呼び出した直後に、gotoAndPlayでフレームを移動させておりました。gotoAndPlayをコメント化したら、あっけなく動いてしまいました。

多くのプログラミング言語では、インスタンスに対する参照がなくなったとき、「ガーベジコレクション」[*1]によりメモリがクリアされます。参照が保持されている間は、インスタンスが存続します。

MovieClipインスタンスは、この点で特殊です。あくまで、タイムライン上の実体として、扱われます。つまり、参照の有無にかかわらず、親タイムライン(_parent)から実体が消滅したときにインスタンスは破棄されます。インスタンスに設定されたタイムライン変数や、ユーザー定義のプロパティ(メソッド)も運命を共にします。

そして、MovieClipインスタンスの実体がタイムラインから消滅すると、参照にはパスをもたず(文字列表現が"")データタイプ(typeof演算子の戻り値)"movieclip"の何者かが残ってしまったということですね。
引用:
タイムライン上に作った関数は、カーソルがそのタイムライン上でないと利用できない ということだったのですね。

「ソースの簡略化」は、問題を絞込むプロセスです。これが適切にできれば、問題は半分解決したも同じです。要領よくできるかどうかは、多分に経験にも依存します。まずは、やってみることが大切です。

少なくとも、回答者のアドバイス・確認事項にしたがった結果や、ご自分で独自に調べられた情報を詳しく報告された点がよかったと思います。えてしてパニックになってしまうのか、ご自分の質問ばかりに意識がいってしまい、回答者のアドバイスや確認を読み飛ばしてしまわれる例が少なくありません。そうすると、解決が遅くなるばかりか、貴重なスキルアップの機会を逃してしまうことになりがちです。

ともあれ、解決してよかったです。がんばってください。
引用:
今回はflashの基本が理解できていないこと以外に
自分のソースの簡略化が適切でなかったことにも、
大きな問題点があったと認識しております。

_____
[*1]引用:
拙著『オブジェクト指向で考えるActionScript』p.158注[*9]より:
ActionScriptでは「ガーベジコレクション」という技術により、オブジェクトインスタンスは自動的に削除されます。削除してよいかどうかは、そのインスタンスを参照している変数(プロパティ)が存在するかどうかで判断されます。
これは食堂で、お客さんが席を立って帰ったらテーブルの上をかたづけるというのに似ています。グループ客の場合には、その全員が食事を終えて誰も席にいなくなってからかたづけを行います。つまり、複数の変数(プロパティ)がインスタンスを参照している場合は、最後の変数が削除されて参照がすべて失われたときに、オブジェクトインスタンスはメモリーから消去されます。


----------------
 

xStaff
Åê¹ÆNo.13020
投稿日時: 2004-12-3 20:19
新米
居住地:
投稿: 20
使用環境:
WinXp,Flash MX2004(7.2)
Re: タイムライン上の関数の参照ができない
flashを触り始めた先月、vbとの開発効率の差に嘆いておりましたが、
おかげさまで、flashを多少習得できてきた今、flashを徐々に楽しめるようになってきております。

これからもまだflashとの格闘の日々は続くと思いますが、
今後ともよろしくお願いします。
この度はご指導ありがとうございました。



余談ですが、1週間前は、スレッド「V2ComponentのDataGridでVscrollがおかしい・・・」と同様のバグ?にハマっておりました(笑)












« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops