深い階層でのムービークリップの操作について

このQ&Aのポイント
  • 深い階層でのムービークリップの操作についてに関する質問です。
  • 質問内容には、Thumb_nail(ムービーインスタンス)、スクロールバー( sc_ bar )、sheet(ムービーインスタンス)、target(画像読み込み用ダミームービーインスタンス)などが関係しています。
  • 具体的なムービークリップの操作についての記述があり、読み込んだJPEGが押下された時のアクションについて教えてほしいという質問です。
回答を見る
  • ベストアンサー

深い階層でのムービークリップの操作について

関連した質問で恐縮です。 ・シーン1   ┗Thumb_nail(ムービーインスタンス)     ┗スクロールバー( sc_ bar )     ┗ sheet(ムービーインスタンス)       ┗target(画像読み込み用ダミームービーインスタンス) targetを複製しながらJPEGファイルを読み込んでいます。(ファイルが存在するまで) そのScriptは全てThumb_naliのタイムラインのアクションです。 <1フレーム> var i = 1 ; var e_flg = 0 ; function Sheet_Scrolling() { sheet._x = sc_bar.getScrollPosition()*(-1) + 0 ; } sc_bar.setChangeHandler("Sheet_Scrolling"); <3フレーム> var fileload:LoadVars = new LoadVars(); fileload.load("b"+i+".jpg"); fileload.onLoad = function(success:Boolean) {  if (!success) {   e_flg = -1;  }  else {   e_flg = 1 ;  } }; <5フレーム> switch(e_flg ) {  case 0:   gotoAndPlay(4) ;   break ;  case 1 :   sheet.target.duplicateMovieClip("b" + i, i) ;   sheet["b" +i].loadMovie("b" + i+ ".jpg") ;   sheet["b" +i]._name = "b" + i ;   sheet["b" +i]._x += (i - 1) * 90 ;   i++ ;   e_flg = 0 ;   gotoAndplay(3) ;   break ;  case -1:   sc_bar.setScrollProperties(50, 0, (i-1)*90-360);   stop() ;   break;  default:   break ; } ここからが本題なのですが、読み込んだJPEGが押下された時のアクションはどこでどのように記述するのかご教授願えませんでしょうか?。(試した内容は文字数制限で書けません。)

  • Flash
  • 回答数5
  • ありがとう数23

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

フレーム5の case -1: に、  for( no = 1 ; no <= ( i - 1 ) ; no++ )  {   sheet[ "b" + no ].onPress = function ()   {    /*ここにクリックされた時の処理を書く*/   };  } こんな感じで、いかがでしょうか。 変数名 i は、for 文のループカウンタとしてよく使われます。i でなければならない理由は特にないのですが、プログラムの世界では古くからの慣習になっています。 ファイル数をカウントする変数は、分かりやすい別の名前を付けるといいと思いますよ。

teddy1014
質問者

補足

いつもありがとうございます。 case-1のところで、お教え頂いたScriptを記述し、 「_root.gotoAndPlay(10) ;」を追加しました。 ここで、選ばれたサムネイル画像の拡大版(ここで別のファイルを読込みます。)とSpec(テキスト)を下欄に表示しようと思います。 全てのサムネイル画像(Scroll対象のJPEG)のマウスの計上が変化するようになりましたが、反応しません。 「_root」と記述すると、シーン1のタイムラインにジャンプすると言う認識でしたが間違いでしょうか?。 どうぞ宜しく御願いします。

その他の回答 (4)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.5

・・・間違い探しゲームのようで何ですが、落ち着いて、よーく見てください。  sheet._x = sc_bar.scrollPosition * ( -1 ) + 0; です。  > sheet._x = sc_bar.scrollPosition()*(-1) + 0 ;                   ▲ scrollPositionのすぐ後についている()を削除してください。これで直ると思います。

teddy1014
質問者

お礼

ありがとうございます。 scrollPosition()とscrollPositionの意味が分かっていないようです。 お陰様でScrollBarの件は一件落着しました。 また、別の問題が発生しましたので、新たに質問させて頂きます。 どうぞ宜しくお願い致します。

  • DPE
  • ベストアンサー率85% (666/776)
回答No.4

落ち着いて、例として挙げたスクリプトをよく見てください。 http://okweb.jp/kotaeru.php3?q=989128 の#3からコピーしてきたものです。  function Sheet_Scrolling()  {   sheet._x = sc_bar.scrollPosition * ( -1 ) + 50;  }  sheet._x = sc_bar.scrollPosition * ( -1 ) + 50;             ▲  > sheet._x = sc_bar.getScrollPosition()*(-1)    + 50 ;              ▲ 似ていて紛らわしいのですが、getScrollPosition() ではなく scrollPosition です。scroll の s が小文字になりましたので、この間違いにもご注意を。 UIScrollBar コンポーネントでは、getScrollPosition はなくなりました。 sheet の中心点(左端)が Thumb_nail の中心点にくるように配置している場合は、+50 は不要です。 ----------- 解説書の件はあまり参考にならないと思いますが、まあ、一応書きますと。 私は、「サンプルで学ぶ!Flash5J 」で描画とアニメの基本を、「 GO!GO!FLASH5 [ゲームを作ろう編]」で ActionScript の基本を勉強しました。 いつかもちょっと書きましたけれど、Flash 5 の時代の本ですので入手も困難でしょうし、MX や MX 2004 が主流の今では内容も不足です。 Flash 5 の頃には、target.onPress = ・・・ の書き方はありませんでした。これを知ったのは、「 ActionScript+CGIプログラミング」という本でした。「 GO!GO!FLASH5 [ゲームを作ろう編]」と同じ、森 巧尚さんの著書です。 外部ファイルとのやりとりも触れられており、今でも入手は可能ですが、Flash とCGIの Perl の連携がテーマですので、入門用としてはオススメできません。 MX 2004 では解説書は卒業し、ヘルプで調べながらやっています。ところどころ大ボケな間違いがあるのも、このためです(すみません ^^;) 変数や関数については、C言語や Java など、アプリケーションの開発にも使われているプログラミング言語の解説書の方が詳しいかもしれませんね。 ちなみに私がC言語を勉強した時にお世話になったのは、林 晴彦さんの「新C言語入門」という本です。 当時はスーパービギナー編・ビギナー編・シニア編・応用編の4冊から成るシリーズでした。 スーパービギナー編は、本当に何も知らない、ビギナー編も早い人向けに書かれており、私もこれで関数や変数・制御文( for ・ if ・ switch など)のことを勉強しました。 C言語の解説書ではベストセラーで、シリーズの構成は変わっているかもしれませんが、今でも改訂・重版されているようです。 ActionScript の構文や思想は、Java を模していると言われています。その Java の元になったのはC++という言語で、C++はC言語を発展させたものです。 ActionScript で、各ステートメントを”;”で区切る・コメントの入れ方・制御文・演算子などは、C言語と全く同じです。関数の扱い方も、一部を除けば同じです。 また、ActionScript 2.0 になって取り入れられた、fileload:LoadVars =・・・のように”:”で区切って変数の型を明示するスタイルは、おそらく Java のスタイルだと思います。 C言語や Java と ActionScript は違う言語ではありますが、似ているところはたくさんあります。C言語や Java の解説書でも、役に立つところはあるかもしれません。 余談ですが。 出版関係の方のお話では、解説書の価格は1000~2000円台が基本とのことでした。3000円以上の本はよほどの内容でない限り買う人が少なく、売り上げも見込めないそうです。 私が見た限り、3000円以上の解説書は確かに内容が高度で、明らかにターゲットを上級者やプロに絞っている本が殆どでした。 財布の都合もありますけれど(^^ゞ)、3000円以上の本は、特に初心者の頃にはやはり買う気がしません。買っても理解できないくらい難しく、ムダになる可能性も高いからです。 最近は、全ページフルカラー印刷の写真・図版付きで厚さも分厚く、コストの面で3000円を超えている本(アプリケーションの全機能を解説した、辞書的な本に多い)もありますが、1色刷りまたは2色刷り程度でページ数もそれなりなのに3000円以上もする本は、中・上級者向けの難しい本と見てよさそうです。 ちょっと変わった面からの判断基準ですが、ご参考までに。 万人が絶賛した本でも、自分にとっては役に立たなかった、というのは、よくある話です。 また、いくら本を読んでも、実際にやってみなければ結局理解できないのは、プログラミングもアプリケーションの使い方も同じです。 いきなり難しいものから作ると挫折してしまいますから、簡単な作品を途中で投げ出さないで完成させて、少しずつステップアップしていくといいと思いますよ。

teddy1014
質問者

補足

色々教えて頂いているのですが、UI ScrollBarだけが解決しません。 function Sheet_Scrolling() {  trace("function call") ;  sheet._x = sc_bar.scrollPosition()*(-1) + 0 ; } on(scroll) {  _parent.Sheet_Scrolling(); } Script上は問題無いと思うのですが。スライダを動かすと正しくTraceが出力されるのですがSheetが動いてくれません。 この1ヶ月程度で質問させて頂いた内容を全て網羅した1本のFlashファイルを作成する事が出来ました。 カテゴリー・サブカテゴリーの条件選択を各々のシーンで実行し、指定された条件にてサムネイル表示のシーンにて 外部ファイルからJPEGを読込み、スクロールバーを付けて表現し、選ばれたら拡大表示とJPEGの説明テキストを表示、マウスクリックにて別コンテンツにジャンプする。 あともう一歩です。 どうぞ宜しく御願い致します。

  • DPE
  • ベストアンサー率85% (666/776)
回答No.3

> ちなみに、UI ScrollBarのScriptってMXのScrollBarのものと、全然違うのでしょうか?。 全く違うとは言いませんが、一部が変更になりました。 ”スライダが動いた時にスクロール処理が実行される原理”と、”スライダの位置情報を得る方法”が、大きく変更されました。UIScrollBar に移行するには、スクリプトの変更が必要です。 詳しくは http://okweb.jp/kotaeru.php3?q=989128 の#3に書いておきました。そちらを参考にして移行してください。なお、#3の回答の一部に誤りがあり、申し訳ありませんでした。 スクリプトの大文字・小文字の区別は、きちんとした方がいいでしょう。案外あいまいな解釈ですので、上手くいったりいかなかったりと動作が不安定になり、不具合の原因にもなります。 「アクション」ウィンドウでは、キーワードや識別子になっている文字には色が付きます。 gotoAndPlay など、Flash で提供されているメソッド等を記述して文字の色が変わらなかったら、それはつづりや大文字・小文字が違っているということです。入力する時の目安にしてください。 ちなみに配色は、「編集」→「環境設定」の「 ActionScript 」のタブで変更できます。 ------------- _root のフレーム 10 でインスタンス thumb_nail が持っている変数を利用する場合は、その時点でインスタンス thumb_nail が _root のタイムラインに存在していることが条件になります。フレーム 10 では消えているけれど、フレーム1では存在していたんだから、という理屈は通用しません。 thumb_nail での no という変数は、for 文を使うための、ただのループカウンタです。まあ、ファイルを数える変数に変更なさったとしても、要するに単なるカウンタとして利用としているだけですよね。 最終的な値は最後にファイルを読みに行った時の数、例えば画像ファイルが5つあったのなら6が入っています。ですから、_root からこれを参照しても、何番目のサムネイルがクリックされたかを知ることはできません。 _root のフレーム1に、変数を1つ用意してください。ここでは仮に、item_no とします。初期値はとりあえず0でいいでしょう。 次に、#1で紹介した for ループを、次のように変更してみてください。 (ファイル数を no 、ループカウンタを i とします)  for( i = 1 ; i <= ( no - 1 ) ; i++ )  {   //サムネイルの管理番号を設定   sheet[ "b" + i ][ "image_no" ] = i;   sheet[ "b" + i ].onPress = function ()   {    //クリックされたサムネイルの番号を記録    _root.item_no = this.image_no;    _root.gotoAndPlay( 10 );    };  } sheet[ "b" + i ][ "image_no" ] = i; で、サムネイルの各ムービークリップに image_no という変数が定義されます。この変数には通し番号が入ります。 クリックされた時にこの変数の中身を別の変数に記録しておくと、_root の方でも、何番目のサムネイルがクリックされたのかを知ることができます。 また、この管理番号を受け取る変数を _root に置いておけば、フレーム 10 で thumb_nail がなくなっていても利用できます。 変数・関数の利用方法、関数が実行されるタイミング・変数の値がどのように参照されるかなどは、ActionScript の基本中の基本です。 今ひとつピンとこないようでしたら、ActionScript の基本に詳しい解説書や解説サイトのURLなりを手に入れて、しっかり研究してください。 UI コンポーネントの制御や外部ファイルからの読み込みは難度が高く、手を出すなら基本は既にマスターしていることが大前提になります。 頑張ってください。

teddy1014
質問者

補足

1.Thumb_nailの1フレームのフレームアクションと   sc_bar(コンポーネント)のアクションに以下を記述。   function Sheet_Scrolling() {    trace("function call") ;    sheet._x = sc_bar.getScrollPosition()*(-1)    + 50 ;   }   on(scroll) {    _parent.Sheet_Scrolling();   }   結果は変わりませんでした。 2.環境設定で、識別子やキーワードを赤にすると良く分かりますね。 3.へぇ、このようにムービークリップに変数を定義出来るんですね!。 4.DPEさんのように基本に詳しいなるための解説書を教えて頂けませんか?。   色々書店を廻って物色しましたが、書店毎に扱う書籍が違うし、何が自分に合っているのかが分かりません。  皆さん異口同音に「自分で見て良いと思った物を」と言われますが、何も知らない者にとっては何が良いのかが分かりません。(もう3冊も購入しましたが、あまり役立つものじゃなかったようです。)  DPEさんが習得された書籍などをご教授頂けませんか?。 どうぞ宜しくお願い致します。

  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

サムネイル画像をクリックした時に、シーン1のフレーム 10 に移動したい、ということで、よろしいでしょうか? まず、フレームの移動が正常にできているかどうかを確認してください。 フレーム 10 でのファイルの読み込み等のスクリプトはコメントにして一時的に無効にしておき、フレーム 10 であることが分かる絵などを適当に描いて確認するといいでしょう。 移動するスクリプトは _root.gotoAndPlay( 10 ); で間違いはないので、おそらく移動はできていると思います。 フレームの移動が問題なくできているのであれば、移動した先での処理が上手くいっていないために、何も変化していないように見えるだけではないでしょうか。

teddy1014
質問者

お礼

あのぅ、ちょっと違う事なのですが、サムネイル画像をクリックした時にシーン1の10フレームに移動させる際に、何番目のサムネイルがクリックされたのかを情報として渡したいのですが、どのようにすれば宜しいのでしょうか?。10フレームのScriptで_root.thumb_nail.noと記述すると「undefined」になってしまいます。 CASE-1でループ処理をしながら関数を記述しましたが、あそこでは「no」と言う変数は確定していないと言う事でしょうか?。

teddy1014
質問者

補足

_root.gotoAndPlay( 10 ); 文の前と、ルートの10フレームのフレームアクションにTrace文を挿入して試してみましたが、10フレームのTrace文は表示されませんでした。 ちなみに、UI ScrollBarのScriptってMXのScrollBarのものと、全然違うのでしょうか?。 今は、Scriptは以前のままにしてコンポーネントだけはUI ScrollBarにしている為にScrollBarをスライドしてもサムネイルは動きません。 case -1:  sc_bar.setScrollProperties(50, 0, (var_ctr-1)*90-360); for( no = 1 ; no <= ( var_ctr - 1 ) ; no++ ) { sheet[ "b" + no ].onPress = function () { _root.gotoAndPlay(10) ; }; } stop() ; break; あっ、この補足を書いている時に「gotoAndPlay」の「Play」が「play」(pが小文字)になっていたので大文字に変更したら正しく動きました。 でも、この同じCase文の中で、読み込みを待つ為に前のフレームに戻ったり、次のJPEGを読む為に読み込みを行なっているフレームに戻したりしている箇所では「play」のままで正常に動いていたので、全然気が付きませんでした。 こんなものなのでしょうか?。

関連するQ&A

  • ルートとムービークリップの関係について

    「target」と言うのは、外部のJPEGファイルを読み込む為のダミーのムービーです。(中身はありません。) 「sheet」内の1フレームに下記のScriptを記述しました。 var fileload:LoadVars = new LoadVars(); fileload.load("b"+i+".jpg"); fileload.onLoad = function(success:Boolean) {  if (!success) {    e_flg = 1;  } }; 5フレーム目には以下のScriptを記述しました。 if(e_flg == 0) {   target.duplicateMovieClip("b" + i, i) ;   this["b"+ i].loadMovie("b" + i + ".jpg") ; this["b" +i]._x += (i - 1) * 90 ; i++ ; gotoAndplay("loop") ; } else { function Sheet_Scrolling() { sheet._x = _root.sc_bar.getScrollPosition()*(-1) + 50 ; } _root.sc_bar.setScrollProperties(50, 0, (i - 1) * 90 - 360); stop() ; } *何をしているかと言うと、   -JPEGファイルがあるだけ読み込んで、targetと言うムービークリップの複製として読み込みながらsheet内に横展開する。その為のループ処理として1フレームと5フレームを行き来しています。   -JPEGを最後まで読み込んだらScrollBarコンポーネントの設定を行なっています。(以前お教え頂いた通りに。) ルートの1フレームに下記のScriptを記述しています。 sc_bar.setChangeHandler("Sheet_Scrolling"); JPEGを読み込んでいるようですが、表示されるのはマスクの範囲内だけ。ScorllBarも左右に動くのですが、ScrollしてもBarは動きますが、JPEGはそのままです。

    • ベストアンサー
    • Flash
  • ムービークリップ再生順序 制御について

    はじめて質問します。Flash初心者ゆえつたない説明ですいませんが、よろしくお願いします! Flash:ActionScript2.0 [現状] メインフレームにABCというムービークリップを配置しています。 それぞれ「mc1」「mc2」「mc3」というインスタンス名がついています。 各ムービークリップにはそれぞれ動きが設定しており、”moving”というフレームラベルをつけています。 [どう動作してほしいか] まずAのムービークリップが再生。Aのムービークリップ再生終了。 ↓ Bのムービークリップ再生開始。Bのムービークリップ再生終了。 ↓ Cのムービークリップ再生開始。Cのムービークリップ再生終了。 ↓ Aに戻る。 上記の動きをタイムラインを利用するのではなく、メインフレームに1つactionScriptを書くことで動作させるにはどうしたらいいでしょうか? ちなみに今は以下のように記述しており、実行すると3つのムービークリップが全て同時に動いてしまいます。 var list:Array = new Array(); for(var i=1; i < 4; i++) { var mcname = "mc" + i ; list[i] = eval(mcname); list[i].gotoAndPlay("moving"); } よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップの制御について

    スクリプト初心者です。 ムービークリップの制御について、まったくわからず困っています (1)シーン1、5フレーム目にムービークリップ、インスタンス名a_mc配置 (2)a_mcの中にb_mc配置。b_mcをクリックすると→a_mcの1フレーム目に移動。もう1度b_mcクリックすると→a_mcの10フレーム目に移動。もう1度b_mcをクリックすると→a_mcの1フレーム目に移動・・・と、 b_mcをクリックするごとにa_mcの1フレーム目、10フレーム目、1フレーム目・・繰り返す制御をしたいのですが。。 どなたか分かる方いましたら 教えてください!!

  • ムービークリップ内のボタン

    フラッシュ初心者です。 アクションスクリプトがうまく動かず困っています。 シーン1にムービークリップ1(インスタンス名:mc1)とムービークリップ2(インスタンス名:mc2)が置いてあります。 mc2の中にはボタンAを配置してあり、ボタンAをクリックすると、mc1のフレームラベル(B)に飛ぶような制御をしたいです。 ボタンAに記述してあるスクリプトは以下です。 on (release) { this._parent.mc1.gotoAndplay("B"); } しかしクリックしても全く動きません。 絶対パスで指定してもダメでした。 ちなみに、ためしに、mc1ではなく、シーン1上のフレームラベルに 飛ばすように記述したら普通に動きました。。 何か記述間違いがあるのでしょうか? 分かる方がいましたら教えてください。 お願いします。

  • ムービークリップのインスタンス名を変数で扱う

    Flash初心者で、レベルの低い質問だとは思いますが申し訳ありません。単純なシンタックスに関する質問です。 Panel.Panel0Cont ~ Panel.Panel10Cont という11個のムービークリップがあります。 それぞれのムービークリップを一挙に指定のフレームへgotoAndPlayさせる際に、ムービークリップの名前を変数で代入してforループで回したいのですが、変数への代入の仕方が解りません。例えば、 for (i=0; i>10; i++) { var mc:MovieClip = "Panel.Panel"+i+"Cont"; mc.gotoAndPlay(JumpNum); } mcはムービークリップですから、単純な文字列を代入しても当然タイプエラーになってしまいます。ムービークリップのインスタンス名のプロパティに、文字列を変数を使って代入するやり方があるのだと思います。 そのやり方をご教示頂けませんか。 ※参考書を2冊ひっくりかえしてもにわかには見つかりませんでした。

    • ベストアンサー
    • Flash
  • フレームに配置したムービークリップを配列に格納

    ActionScript3.0を使っています。よろしくお願いします。 動的にインスタンスを生成して配列に格納する方法は すでに取得しているのですが、 フレームに配置したインスタンスを配列に格納する方法がわかりません。 配置したインスタンス名は連番になっており、 数が多いため下記のようにループさせて配列に格納したいと思います。 現在のコードは下記のとおりです。 var mapBtMcArr:Array = new Array(); for(var i:int=1; i<9; i++) { var mapBtStr:String = "r_machi01_"+ i; var mapBt:MovieClip = mapBtStr; mapBtMcArr.push(mapBt); trace(mapBtMcArr); } これだと、型Stringの値が関連しない型…というエラーが表示されてしまいます。 スクリプトを書く上での基本だと思いますが、 ご伝授いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • キーボードを押した時のムービークリップの動きについて

    キーボードを押した時のムービークリップの動きについて 横スクロールの簡単なFlashゲームを作ろうとしています。 制作環境はWinXP,flashCS4,as3です。 今やりたい事は、キーボードの十字キーを押すことでキャラクターを移動させる、と同時に キャラクターのムービークリップ内に作ってある任意のフレームに飛ばして 歩いているアニメーションを再生させるということです。 「KeyboardEvent」クラスを使って、function に「インスタンス名.x +=3;」という 記述をすることでインスタンスの移動はできました。 ですが、キーボードを押し続けると、アニメーションの作ってあるフレームが 最初のフレームから動かないため、動きがつきません。 キャラクターを移動させると同時に、キャラクターのアニメーションを再生させて動きを つけるにはどういう記述の仕方をしたら良いでしょうか? アドバイスをいただけましたら幸いです。 下記URLが、現在つくっていてうまくいかないものの例です。 http://homepage2.nifty.com/meary/test.html 下記が記述スクリプトです -------------------------------------------------------- //キーダウンしたとき stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown); //右矢印キーを押すと右に移動、hitoインスタンスはwalkフレームへ function handleKeyDown(e:KeyboardEvent) { if(e.keyCode == Keyboard.RIGHT) { hito.x += 3; hito.gotoAndPlay("walk"); } }

    • ベストアンサー
    • Flash
  • for文について

    以前もお聞きしたかも知れませんが、教えて頂きたく。 7フレームに以下のScriptを記述しています。 sheet.target.duplicateMovieClip(ctr,ctr) ; dummy_loader.loadClip(var_article[ctr-1]+".jpg",sheet[ctr]); gotoAndPlay("rtn") ; dummy_listener.onLoadError = function(target_mc:MovieClip, errorCode:String) { gotoAndstop("end") ; } dummy_listener.onLoadComplete = function(target_mc:MovieClip) { sheet[ctr]._name = ctr ; sheet[ctr]._x += (ctr - 1) * 90 ; var_ctr++ ; dummy_loader.unloadClip(var_article[ctr-1]+".jpg"); }; 「rtn」は6フレームのフレームラベル、「end」は8フレームのフレームラベルです。 var_articleと言う配列に入っている情報(Key項目)を元にJPEGを読込んでいます。 onLoadCompleteにてJPEGをセットして前のフレームに戻して配列にデータが入っている間6<->7フレームをグルグル回って処理しています。 正常に動いています。 これを、No.1005374の#3でDPEさんに指摘して頂いたようにfor文を使ってのループ処理に変えたいと思います。 for(i = 0; i <= ctr; i++) { sheet.target.duplicateMovieClip(ctr,ctr) ; dummy_loader.loadClip(var_article[i]+".jpg",sheet[i]); } これで、1件づつ読込んでonLoadCompleteにて複製したムービークリップに名前を付けて当該の座標に配置しようと試みました。が、結果はfor文が全て処理されてからonLoadCompleteの処理がなされてしまいます。 自らフレームを利用したループと、for文を利用したループと、何処が違うのでしょう?。 どうぞ宜しく御願い致します。

    • ベストアンサー
    • Flash
  • 複数生成したムービーの中のムービーはドラッグ移動できないようにしたい。

    複数生成したムービーの中のムービーはドラッグ移動できないようにしたい。 環境はActionScript3.0です。 chipというシンボルからdotMC+連番というインスタンスを複数生成しながら ドラッグできるようにして、その中にeditMC+連番というインスタンスを 生成しました。 ところがdotMC+連番はドラッグできるのですが、editMC+連番もドラッグすると それ単体で移動してしまいます。 おそらくevent.targetにしているのでeditMC+連番単体でも 動いてしまうのでしょうが、それを動かないようにできないでしょうか。 宜しくお願いします。 for(var j=0; j<10; j++) { var dotMC:chip = new chip(); dotMC.name="dotMC"+j; addChild(dotMC); dotMC.addEventListener(MouseEvent.MOUSE_DOWN, chipMCmove); dotMC.addEventListener(MouseEvent.MOUSE_UP, chipMCStop); var editMC:edit = new edit(); editMC.name="editMC"+j; chipMC.addChild(editMC); } //▼▼▼▼▼▼▼ドラッグ可能にする function chipMCmove(event:MouseEvent):void { event.target.startDrag(); } function chipMCStop(event:MouseEvent):void { event.target.stopDrag(); }

    • ベストアンサー
    • Flash
  • 条件式の中に入れるとムービークリップが動作しない。

    条件式の中に入れるとムービークリップが動作しない。 またまた、悩みにはまってしまいました。 初期状態で、ボタンのムービークリップを全て、ラベルreadyの静止画像に設定し、 クリックされたときに、そのボタンのラベルhitに移動して、 そこに設定されたムービークリップの動作をさせようとしています。 以下のようなアクションスプリクトを書きましたが、 hitに移動するものの、hitに設定したムービークリップの、 1フレーム目の静止画像しか表示されません。 試しに6行目の_root[buttonName].gotoAndStop("ready"); のreadyをhitに変えると、hitラベルのムービークリップが動作します。 原因は何なのでしょうか??? ////////////////////////////////////////////////////////// var onMapButton_num = 0; onEnterFrame = function () { var buttonName = "onMapButton" + onMapButton_num + "_mc"; for ( var i:Number = 1; i < 6; i++) { // 初期設定 buttonName = "onMapButton" + i + "_mc"; _root[buttonName].gotoAndStop("ready"); //ボタンをすべて ready に } for ( var i:Number = 1; i < 6; i++) { // アクション if ( onMapButton_num== i ) { // ボタンが押された場合 buttonName = "onMapButton" + i + "_mc"; _root[buttonName].gotoAndStop("hit");     // ヒットしたボタンを hit に } } }; // ボタン(1~5)のアクションと 番号の取得 ////////////////////////////////// onMapButton1_mc.onRelease = function() { onMapButton_num = 1; }; onMapButton2_mc.onRelease = function() { onMapButton_num = 2; }; onMapButton3_mc.onRelease = function() { onMapButton_num = 3; }; onMapButton4_mc.onRelease = function() { onMapButton_num = 4; }; onMapButton5_mc.onRelease = function() { onMapButton_num = 5; }; stop();

専門家に質問してみよう