• 締切済み

duplicateMovieClip

xpでFlash8を使ってます。 ボタンを押すと玉がどんどん右に動くflashを作りたいのですが画面に2個しか玉が現れません。この場合、深度はどのようにかけばいいのでしょうか? ボタンは on(release){ for(i=1;i<=10;i++){ ball.duplicateMovieClip("en"+i,i); ball._x=100; ball._y=100; } } 玉は onClipEvent (enterFrame) { this._x += 5; } と記述されています。 分かる方教えてください!!おねがいします!

  • jsqrm
  • お礼率45% (16/35)
  • Flash
  • 回答数1
  • ありがとう数1

みんなの回答

noname#35109
noname#35109
回答No.1

先のことは一切考えないものとして, ご質問の for文 に関する回答のみを答えます。 書かれていらっしゃるスクリプトは, 深度の問題ではなくて座標の問題だと思います。 書かれていらっしゃるボタンのスクリプトに注釈行を入れると次のようになります。 --------------------------- // 変数 i が 10 以下でループ for(i=1;i<=10;i++){   // ball を en1~en10 で 深度 i に複製   ball.duplicateMovieClip("en"+i,i);   // ball の座標を 100, 100 に移動   ball._x=100;   ball._y=100; } --------------------------- en1~en10 ムービークリップは, ボタンが押されたときの ball の座標に全てコピーされます。 つまり,10個のムービークリップは複製されていますが, 座標が重なっているため,1つにしか見えないということです。 複製された en1~en10 はどこに配置したいのかは, 私にはわかりませんが,別々の座標を指定してください。 例えば次のようにするとか, --------------------------------- on (release) { // 変数 i が 10 以下でループ for (i=1; i<=10; i++) { // ball を en1~en10 で 深度 i に複製 ball.duplicateMovieClip("en"+i, i); // ball の座標を 100, 100 に移動 ball._x = 100; ball._y = 100; // en? の座標を i*20+100, i*20+100 に移動 this["en"+i]._x = i*20+100; this["en"+i]._y = i*20+100; } } --------------------------------- また,例えば次のようにするとか。 ---------------------------------- on (release) { // 変数 i が 10 以下でループ for (i=1; i<=10; i++) { // ball を en1~en10 で 深度 i に複製 ball.duplicateMovieClip("en"+i, i); // ball の座標を 100, 100 に移動 ball._x = 100; ball._y = 100; // en? の座標を 左上の方のランダムな座標に移動 this["en"+i]._x = Math.random()*Stage.width/2; this["en"+i]._y = Math.random()*Stage.height/2; } } ----------------------------------  

関連するQ&A

  • AS1.0で基準点をそろえたい

    AS1.0でduplicateMovieClipを使った複製をした後MC同士の基準点をそろえたいのですがうまくできません 今MC1とMC2というムービークリップをduplicateMovieClipを使って複製しています まず針(MC1)というフレームがありその中に //関数が呼ばれたら描画する setInterval(hari,1000); function hari(){ i ++; duplicateMovieClip("Hari","hari" + i , i); } が書いてありこれは針が1秒ごとに描画されていくという方法です そして円(MC2)というフレームの中にも //関数が呼ばれたら描画する setInterval(EN,1000); function EN(){ i ++; duplicateMovieClip("En","en" + i , i); } がかいてありこれも複製できるようになっています 針(MC1)の中には onClipEvent (load) {       //針の位置をランダムで決めた後描画 this._x = Math.random() * 300 + 50; this._y = Math.random() * 200 + 50; } onClipEvent (enterFrame) {     //針回転     _rotation += 6; } がありこれをベースにして円(MC2)の基準点を針(MC1)にあわせて描画したいのですがやり方がわかりません 自分が考えた方法ですが onClipEvent (load) {       円1の位置x = 針1の位置x       円1の位置y = 針1の位置y } をやったんですがうまくいきません 誰か教えてください

  • duplicatemovieclipについて

    初めまして。 duplicatemovieclipで”maru”というインスタンスを複製する際、クリックする度に次々と複製が増えていくようにしたいのですが、新しいインスタンス名と深度を変えていくつか同じスクリプトを打っても一つしか表示されず、場所が移動するだけになってしまいます。 on (release) { maru.duplicateMovieClip("maru2",2);//3、4と増やす _root["maru"+_root.dep]._x = Math.random()*Stage.width; _root["maru"+_root.dep]._y = Math.random()*Stage.height; } それから、便宜上座標をランダムにしているのですが、ステージ上でクリックした場所に複製されるようにする事は可能でしょうか? よく理解していないので見当違いな事をしているかもしれませんが、どうか教えて下さい・・・。

    • ベストアンサー
    • Flash
  • flashのMCの中にMCを入れてその中のボタンでシーンを移動したいのですができません

    flashの シーン1で大元になる5つのMCで構成された大元のMCにはonClipEvent (enterFrame)のスクリプトを記述しています。 その5つのMCの中、それぞれに、ボタンがあります。そのボタンはシーン1からシーン2に飛ばすアクションをつけているのですが、まったく反応しません。 なぜか、同一シーンのフレーム移動は反応するのですが。ボタンの記述は下記です。 on (release) { _parent._parent.gotoAndPlay("work", 1);

    • ベストアンサー
    • Flash
  • AS2 ランダムに出現する煙

    初めて質問させてもらいます。 FLASHのActionScriptで画面下から画面上へ昇っていく煙をランダムに出現させるASを作成したのですが、動き的には満足しているのですが開始時に画面に一気に煙がですぎになります。 煙のない状態から始めるには何を付け加えればいいのかわかりません。 どなたかご教授願えるかたお願いいたします。 環境 FLASH cs3.AS2にて製作 ソース ・タイムライン ----------------------------------------------- for (var i = 0; i<10; i++) { snow.duplicateMovieClip("snow"+i, i); } ----------------------------------------------- ・mc ----------------------------------------------- onClipEvent (load) { sw = Stage.width; sh = Stage.height; th = this._height; this._x = Math.random()*sw; this._y = Math.random()*sh; speed = Math.random()*4+1; flick = Math.random()*4+1; rotate = Math.random()*1; } onClipEvent (enterFrame) { this._y -= speed; this._x -= flick; this._rotation +=rotate; if (this._y<-869.8) { this._y = 1400; } if (this._x>sw+th || this._x<-th) { this._x = Math.random()*sw; this._y = -th; } } ----------------------------------------------- よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ドラッグしたときの当たり判定

    ParaFlaを使ってFlashを制作しています aというスプライトをドラッグし bというスプライトにぶつかったらラベルCに飛ぶ というものを作りたいのですがうまくいきません aに記述しているアクションスクリプト on (press) { this.startDrag (true); } - on (release,releaseOutside) { this.stopDrag (); } - onClipEvent (enterFrame) { if(this.hitTest(_root.b) == true) { this.gotoAndPlay("c"); } } - onClipEvent (mouseMove) { updateAfterEvent(mouse); } バージョンはSWF8です ドラッグはできるのですがbとぶつかっても 何も起こりません bには何も記述していません どこを変更すればよいかわかる方 よろしくお願いします

    • ベストアンサー
    • Flash
  • Flash ふわふわメニュー ロールオーバーでストップ

    下記サイトを参考にして、ふわふわしたメニューを作成したのですが、ボタン(風船)をロールオーバーしたらストップするようにするにはどうしたらよいのでしょうか?使用しているバージョンはFLASH8です。 http://hfm-kenchan.com/Lesson/log_qa/D0609292.htm  onClipEvent (load) {     this._xscale = this._yscale = 10;     vs = 0;  }  onClipEvent (enterFrame) {     vs = vs*0.8+(100-this._yscale)/5;    this._xscale = this._yscale += vs;  }  onClipEvent (load) {     yy = this._y;     rad = 0;  }  onClipEvent (enterFrame) {     this._rotation += 0.2;    rad += 0.1;    this._y = Math.sin(rad)*10+yy;    if (rad > 10)                        } 

  • 立体回転運動 新たにボタンを作って一定角度だけ動かす

    お世話になります。 下記のプログラムは3Dのぐるぐる回るプログラムなのですが、 onClipEvent (load) { degree = 0; r = 100; centerx = 150; centery = 100; } onClipEvent (enterFrame) { radian = Math.PI/180*degree; this._x = centerx+r*Math.cos(radian); this._y = centery+r*Math.sin(radian)/2; this._xscale = this._yscale=this._alpha=this._y; degree += 5; } -------------------------------------------------------------------- それで、ここからなのですが、 onClipEvent (enterFrame) {  --省略-- degree += 5;  ↓ のところをまず削除して、新たにボタンを作って、そのボタンを押すと、 押すたびにある一定の角度分だけ円運動するようにしたいのですが、どうしたらいいんでしょうか? 単純にボタンを作って、 そこに on(release) { degree +=5; } と書いてもまともに動きません。 初心者なものなので、よろしくお願いします。 それと、このプログラムはムービークリップに記載されているのですが、出来たらルート画面のレイヤーにactionを作って、そこにスクリプトをまとめて書きたいと思うんですが、どうしたらいいんでしょうか?ムービークリップにインスタント名をつけて、上記のプログラムの前に、 ムービークリップインスタント名.onClipEvent (load) { --省略-- } ムービークリップインスタント名.onClipEvent (enterFrame) { --省略-- } としたら、フィールド名がありませんとエラーが出てしまいます。 長くなってしまいましたが、わかりずらい説明かとは思うのですが、重ねてよろしくお願いします。

  • flash ふわふわした動き

    こんばんは。 flash 特にactionscriptに関しては“超超”初心者です。 現在、サンプルなどを参考にしつつ勉強中なのですが、 さっそくつまづいています…。 画面の中に、円形のムービークリップをおいて、ふわふわした動きを つけたいのです。(目標としては、シャボン玉のような) ただ、位置は動かず、現在地でゆれているような感じです。 以下のような横の動きをつけて左右に動くのはできたのですが、 縦の動きも変えていかないとふわふわした感じになりません…。 本当は円形にまわるような動きがいいのかもしれないのですが、 どうやって動きを指示したらいいのかわかりません。 onClipEvent (load) { this._x = 450; speed = 1; } onClipEvent (enterFrame) { this._x += speed; if (this._x <= 440 || this._x >= 460) { speed = -speed; } } どなたか、よろしくお願いします。

  • onClipEvent (enterFrame)を利用して一旦止めたいのですが。

    質問させてください。 onClipEvent (enterFrame) { this._x = this._x - spd; if (this._x <= (-600) * num) { this._x = 0; } } を利用して、右から左へテキストが流れるよに設定しましたが、 一旦、x軸10で止めて、10秒後にまた流れる、という形にしたいのですが、 ご教授いただけますでしょうか。 WIN XP FLASH 8

    • ベストアンサー
    • Flash
  • 1フレーム~5フレームまで表示されなくなったのは。。。

    こんにちわ毎回お世話になっております 新しいフラッシュを作ったのですが 前回のフラッシュにしようしたロード画面を 使いまわしました。 ムービークリップ自体には onClipEvent (load) { _root.stop(); } onClipEvent (enterFrame) { if (100 == Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)) { _root.gotoAndPlay(5); } } onClipEvent (enterFrame) { this.gotoAndStop(Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)); } と前回同様記述しました。 しかし今回はロード画面がでず 白紙の画面のまま読み込みが完了し そのままフレーム5に進んでしまっています。 何回もやりなおしたのですが どうしても白紙のまま読み込んでしまいます。 これはFLA自体が破損?したのでしょうか? 非常に困っています。 なにかアドバイスがありましたらお願いいたします。 別のロードムービーを作ったものの 白紙のまま読み込みされました。。。 FLASH8 WIN XP使用です。

    • ベストアンサー
    • Flash