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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     飛ばされたフレームに配置したMCのスクリプトが動作する (ダイナミックテキスト?)
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
TacoRico
Åê¹ÆNo.36985
投稿日時: 2007-12-22 22:21
新米
居住地:
投稿: 2
使用環境:
WinXPHomeSP2 FlashCS3
飛ばされたフレームに配置したMCのスクリプトが動作する (ダイナミックテキスト?)
はじめまして。
自分だけの現象か?バグか?正しい振る舞い?の判断がつかないので、ここで相談させてください。
XP home、FlashCS3 (flash9_ja_jp_9_0_2_updateは当てました。ただし[ヘルプ]→[CS3について]では9.0としか出ません。現象はupdate前から出てました。)

[手順]
新規FlashファイルをAS3.0で作成。strictはずす。

シーン1の様子
| a |○|○| ←1フレにgotoAndStop(3);
|●      | ←1フレにダイナミックテキスト。インスタンス名付ける。
|○|●|○| ←2フレにムービークリップ
一番上のレイヤー:キーフレーム3つ。1フレーム目に、gotoAndStop(3);
2番目のレイヤー:テキストフィールドを作成。ダイナミックテキスト、適当にインスタンス名をつける。
3番目のレイヤー:キーフレーム3つ。後述のムービークリップを2フレーム目のみに、手で配置する。

配置するムービークリップ:1フレーム目に、trace(parent.currentFrame); ←何でもいいはず、実行がわかるもの。ただし1フレーム目。

[実行結果]
出力に 3 と出ます。
3フレーム目にただジャンプするはずですよね?
ところが2フレーム目のMCのスクリプトが実行されてしまいます。ブレークポイントにも掛かる。親では3フレーム目に入ってる。
ダイナミックテキストのインスタンス名を付けなかったり、ダイナミックテキストのレイヤーを一番下にすると、2フレーム目のMCのスクリプトの実行は起こりません。

まず、これは自分以外でも出る現象でしょうか?
バグでしょうか?この動きは正しいものでどこかで解説されてるものでしょうか?

すみませんが、お手隙の方、試してもらえませんか?
よろしくおねがいします。
ニノミヤ カズノリ
Åê¹ÆNo.36987
投稿日時: 2007-12-23 13:02
職人
居住地: 東京
投稿: 430
使用環境:
CS4
.4.11, .5.7
XP Pro(sp3)
Flash Player 10,0,22,87,
AIR 1.5.1,
IE 5.5 & 6 & 7 & 8,
Firefox 2.0.0.20 & 3.0.11 & 3.5,
Opera 9.64,
Safari 4,
Google Chrome 2.0.172.31,
Netscape 7.1
Re: 飛ばされたフレームに配置したMCのスクリプトが動作する (ダイナミックテキスト?)
確認しました。
TacoRicoさんが書かれている実行結果と同様の事がこちらでも起きました。

分かった事は、
・AS2.0でこの現象は起きない。
・ダイナミックテキストに限らず、ムービークリップでもインスタンス名があれば起きる。
・レイヤー2のダイナミックテキストが配置されているフレームと、
 レイヤー3のムービークリップが配置されているフレームが重ならないとこの現象は起きない。
・フレーム2のムービークリップはフレーム3では参照出来ないはずが、何故か参照出来てしまう。

原因は分かりませんが、
動きとしておかしいですし、
本来起こってはならない現象だと思います。
バグと言う見解が合っているのではないでしょうか。
野中文雄
Åê¹ÆNo.36992
投稿日時: 2007-12-23 23:45
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 飛ばされたフレームに配置したMCのスクリプトが動作する (ダイナミックテキスト?)
再現しました。Flash CS3 9.0.2/Mac OS X.4.11です(9.0.2のバージョン情報は、どうも確認手段がなさそうです)。

動的に作成したTextFieldインスタンスの場合も、現象は発生しません。ActionScript 3.0から、タイムライン全体がまず初期化されるようになりましたので、その際にやるべきでないことまでやってしまっている感じですね。

整合性も合理的な理由も考えにくい動作ですので、「バグ」という評価に同意します。

なお、[Strictモード]の解除は、キャストすれば不要になります。

参考:「rootプロパティでメインタイムラインの関数にアクセスできない
引用:
TacoRicoさんは書きました:
新規FlashファイルをAS3.0で作成。strictはずす。
...[中略]...
配置するムービークリップ:1フレーム目に、trace(parent.currentFrame); ←何でもいいはず、実行がわかるもの。ただし1フレーム目。


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

TacoRico
Åê¹ÆNo.36993
投稿日時: 2007-12-24 1:06
新米
居住地:
投稿: 2
使用環境:
WinXPHomeSP2 FlashCS3
Re: 飛ばされたフレームに配置したMCのスクリプトが動作する (ダイナミックテキスト?)
まずはお二方、検証ありがとうございます。
ダイナミックテキストだけでなくムービークリップでも起こるんですね。
そのとき、私のところではインスタンス名を付けなくても起こりました。

[発生条件の追加](暫定)
ダイナミックテキストの代わりにムービークリップやボタンを置いたところ、インスタンス名の有無に関係なく現象が起こる。
ただし、ダイナミックテキストの代わりに置いているムービークリップを、リンケージで書き出ししてあると起こらない。
シーン上だけで起こるのではない。ムービークリップにタイムラインを移植したら、ムービークリップ上でも同様のことが起こる。
スクリプトを含む子ムービークリップを別レイヤーの2フレーム目にさらに置いてみたところ、ダイナミックテキストのレイヤーより下のレイヤーにあるムービークリップにのみ選択的に起こる。

[対策など]
さて、今後どうすればいいでしょうか?
ダイナミックテキストの場合だけではないようなので、検索ワードを考え直してもうちょっと調べてみます。
で、報告済みだったりいい解釈がないようならアドビに投げてみようかと思っています。
もしかすると、野中さんや慣れた方が報告するほうがいいのでしたら、お願いしたい気持ちは正直あります。
自分はそういったことは初めてですので。ただし、押し付けるようになるなら私がやってみます。

あと、この現象は個人的にはかなりきついので、効率的な検知と回避の知恵を探りたいです。
かなり嫌な回避方法も含めて、
・スクリプトの入ったMCにはtrace等を入れるかブレークポイントの設定。(簡単に実行を検知できるものでしょうか?)
・レイヤーの重ね順を考える。
・手で配置せずにスクリプトで配置する。
・子MCのスクリプトは1フレーム目に書かない。
・gotoAnd****を考え直す。
・複数フレームぶち抜きの配置に気をつける。
・現象を引き起こしそうなMCはとにかくリンケージで書き出しておく。
あたりでしょうか。

子MCにスクリプトを書き込むスタイルはもう古いんでしょうかね?
現在、昔のものをAS3.0に移植してるのでかなり気を使いそうです。
いっそ以前のMCの構造から変えたほうが楽か。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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