• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:onReleaseができない)

ONRELEASEができない

このQ&Aのポイント
  • アクションスクリプト2.0とWinXPを使用しています。フレームにアクションを記述して、swfファイルを再生すると、画像が読み込まれるが、クリックしても画像が移動しない問題に困っています。
  • 困っている問題は、アクションスクリプトの部分で指定している_onRelease関数が機能しないことです。_root["thum"+i]._x += 10;のコードを記述していますが、画像がクリックされても移動しません。
  • 原因は分かっていませんが、正しく機能するようにするためには、_onRelease関数が適切に呼び出される必要があります。問題の解決策についてアドバイスをいただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 もう1つ。 thum.loadMovie("./img/+["thum"+i]+".png"); この頭の 「thum」 は何なのかわかりませんが, もし _root["thum"+i] 自身のことでしたら, #1 で書いたようにしてもうまくできません。 理由は _root["thum"+i] に「何か」がロードされた時点で, その 「何か」 によって _root["thum"+i] が乗っ取られるのですから, クリックした時点で, そこに定義した _root["thum"+i].onRelease が消え去ります。 これを回避するには, _root["thum"+i] の中に適当な空のムービークリップでも作成して, その _root["thum"+i] の中の空のムービークリップに 「何か」 をロードします。 すると, _root["thum"+i] の中の空のムービークリップは 「何か」 によって乗っ取られますが, _root["thum"+i] 自体は乗っ取られないので, _root["thum"+i].onRelease が消え去ることはありません。

hukazuo
質問者

お礼

ありがとうございました。 かなり詳しく、わかりやすく回答していただいたので、 無事解決できました。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

> ["thum"+i]に画像が読み込まれるというところまでは > うまくいくのですが うまく行くはずはないと思いますが。 thum.loadMovie("./img/+["thum"+i]+".png"); この頭の 「thum」 って何? です。 何だか良くわかりませんが, とにかく,何だかそれでうまく行ったとします(この件はほっておきます)。 === 原因 === > ["thum"+i]に画像が読み込まれるというところまでは > うまくいくのですが、 > それをクリックすると、画像が右に移動するというのができません。 それでしたら書かれていらっしゃる  for (i=0; i<10; i++) {    createEmptyMovieClip(["thum"+i]",i);    _root["thum"+i]._x = … 略 …    … 略 …  } の後に, trace(i); を加えてみて, 「制御」→「ムービープレビュー」 すると答えが見えると思います。 for文を抜けた後に i は 11 となります。 したがって, _root["thum"+i]._x += 10; は次のようになります。 _root["thum"+11]._x += 10; すなわち _root.thum11._x += 10; となります。 _root["thum"+i].onRelease = function(){… を定義するところまでは, i は 0→1→2→3→4→… となるので問題はありませんが, その _root.thum○ がクリックされる時点では, i は 11 になっているのです。 ですから, _root.thum0 をクリックしても _root.thum1 をクリックしても _root.thum2 をクリックしても    …     … _root.thum10 をクリックしても _root.thum11 が 右に 10 px 動きます。 === 解決策 === _root の i は変動するのですから, そんなものは頭の中から捨て去ってしまって, _root.thum○ の中に変数を作って, その _root.thum○ 内の 変数 を参照すれば良いと思います。 ------------------------------------ _root["thum"+i].onRelease = function(){ _root["thum"+i]._x += 10; } ------------------------------------   ↓変更↓ ------------------------------------ _root["thum"+i].myNum = i; _root["thum"+i].onRelease = function(){ _root["thum"+this.myNum]._x += 10; } ------------------------------------ と言いますかですね。 書かれていらっしゃる延長を理論的に考えると上のようにすればいいのですが, 実際には上のようなことをする必要はありません。 ------------------------------------ _root["thum"+i].onRelease = function(){ _root["thum"+i]._x += 10; } ------------------------------------   ↓変更↓ ------------------------------------ _root["thum"+i].onRelease = function(){ this._x += 10; } ------------------------------------ これでいいはずです。

関連するQ&A