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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     attachMovieで複製したMCがなぜか消える
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
10-feet
Åê¹ÆNo.37254
投稿日時: 2008-1-21 17:58
新米
居住地:
投稿: 25
使用環境:
attachMovieで複製したMCがなぜか消える
前回、初投稿した際の自分の発言で気分を害された人がいましたら、この場を借りて謝罪します。
無知でした。申し訳ないです。

それでは本題に入りたいと思います。
問題点:attachMovieで複製した弾と、同じくattachMovieで複製した敵がいます。
弾が敵に当たった瞬間、爆発してムービークリップ上から敵が消える仕様です。
この時に当たった敵以外の敵が爆発モーション無しで一緒に消えてしまう現象が起きて困っています。
爆発して消えた敵は再度複製されるのですが、弾に当たらずに消えた敵は複製されませんでした。
弾は3発(設定通りに)発射可能で、それぞれ存在する敵全てに当たり、当たれば消えます。
敵も最初は10体(設定通りに)出現します。
何が原因かわからない状態です。ご教授頂けたら幸いです。

以下がメイン上に置かれたMC(インスタンス名:roboBody)に書かれているASです。
尚、移動系のASは長くなるために省略しています。
<code>
onClipEvent (load) {
//attachMovie の名前、深度につかう変数
a = 0;
//ムービー上のミサイルの数を数える変数
bulletcounter = 0;
//ミサイルの最大連射数を持つ変数
maxbullet = 3;
}

onClipEvent(enterFrame){
//スペースキーが押された瞬間のみinput_xにtrueを入れる
if ( Key.isDown(Key.SPACE) && key_space == 0 ) {
input_x = true;
}

key_space = Key.isDown(Key.SPACE);

//input_xがtrueで、ムービー上の弾の数を数える変数bulletcounterrが
//最大連射数(maxbullet)より小さいときに{}内のスクリプト実行
if (input_x == true && bulletcounter<maxbullet){
//attachMovie()で弾のムービークリップを生成
bulletName = "bulletMC" + a;
_root.field.attachMovie("bullet", bulletName , a);

//生成したムービークリップを、発射キャラの位置に移動
_root.field[ bulletName ]._x = this._x - 3;
_root.field[ bulletName ]._y = this._y - 50;

fscommand("play_sound","0,1"); //発射音SE

//ミサイルが一発発射されたのでbulletcounterを1増やす
bulletcounter++;

//次attachMovieで使うための数字を1増やす、最大連射数に達したら深度を0に戻す
if (a < maxbullet){
a++;
}
else if (a == maxbullet){
a = 0;
}

input_x = false;
}
}
</code>

以下がライブラリにあるbullet(MC)に書かれているASです。
識別子は"bullet"です。
<code>
1フレーム目
this._y -=15;

2フレーム目
if ( this._y < -80 ) {
_root.roboBody.bulletcounter -= 1;
this.removeMovieClip();
} else {
this.gotoAndPlay(_currentframe-1);
}
</code>

そして以下がufoを出すためにメイン>field(インスタンス名)の中に設置したenemyStart(インスタンス名)に書いたASです。
<code>
onClipEvent (load) {
//attachMovie の名前、深度につかう変数
ufo_a = 0;
//ムービー上のufoの数を数える変数
ufocounter = 0;
//ufoの最大出現数を持つ変数
maxufo = 10;
}


onClipEvent(enterFrame){

if ( ufocounter<maxufo){
//attachMovie()でufoのムービークリップを生成
ufoName = "ufoMC" + ufo_a;
_root.field.map.attachMovie("ufo", ufoName , ufo_a);

_root.field.map[ufoName]._x = Math.floor( Math.random() * 300 ) + 35;
_root.field.map[ufoName]._y = Math.floor( Math.random() * -200 ) - 20;

//ufoが1体出現されたのでufocounterを1増やす
ufocounter++;

//次attachMovieで使うための数字を1増やす、最大出現数に達したら深度を0に戻す
if (ufo_a < maxufo){
ufo_a++;
}
else if (ufo_a == maxufo){
ufo_a = 0;
}
}

}
</code>

そして以下がライブラリのufo(MC)の"start(フレーム名)"に書かれたASです。
識別子は"ufo"です。
<code>
enMaxHitPoint = 1;
enHitPoint = enMaxHitPoint;
ufoSpeed = 2;


//UFOを左へ移動させ、画面から消えたら右に戻すファンクション
function ufoMove( ufoSpeed ){
this._y += ufoSpeed;

num1 = 650;

if( this._y > num1 ){
this._x = Math.floor( Math.random() * 300 ) + 35;
this._y = Math.floor( Math.random() * -200 ) - 50;
this.enHitPoint = enMaxHitPoint;
}

}

//プレーヤーの攻撃を受けたときの設定
function attacked(){

for (i = 0; i < 4; i++){

bullethit = "bulletMC" + i;

if (_root.field[ bullethit ] != null){
if( this._y > 30 ){
//bulletとthis(ufo)が触れていればtrueを返す
if( _root.field[ bullethit ].hitTest( this.ufo ) ){
this.enHitPoint -= 1;
_root.field[ bullethit ].removeMovieClip();
_root.roboBody.bulletcounter -= 1;
}
}
}

}

}

//ヒットポイントが0になったら消える
function dead(){
if( this.enHitPoint < 1 ){
_root.score += 100;
this.gotoAndPlay("dead");
}
}

this.stop();
</code>

そして以下がufo(MC)内の"dead(フレーム名)"の最後(爆発後)
に書かれたASです。
<code>
_root.field.enemyStart.ufocounter -= 1;
this.removeMovieClip();
</code>

最後に、ufo(MC)内の本体(レイヤー名)に置いたMC(インスタンス名は"ufo")に書いたASです。
<code>
onClipEvent(enterFrame){

_parent.ufoMove( _parent.ufoSpeed );

_parent.attacked();
_parent.dead();

}
</code>

関係ありそうな部分を全て載せた為、長くなってしまいました。
弾を出すために1度trueを入れているのは「そうしなくてはいけない」からです。
そこについての突っ込みは無しで・・・。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » attachMovieで複製したMCがなぜか消える 10-feet 2008-1-21 17:58
     Re: attachMovieで複製したMCがなぜか消える gaienboy 2008-1-21 18:30
       Re: attachMovieで複製したMCがなぜか消える 10-feet 2008-1-21 19:17
         Re: attachMovieで複製したMCがなぜか消える 10-feet 2008-1-21 19:33
     Re: attachMovieで複製したMCがなぜか消える mayor 2008-1-22 1:29
       Re: attachMovieで複製したMCがなぜか消える 10-feet 2008-1-22 12:49
         Re: attachMovieで複製したMCがなぜか消える gaienboy 2008-1-22 13:54
         Re: attachMovieで複製したMCがなぜか消える mayor 2008-1-22 13:54
           Re: attachMovieで複製したMCがなぜか消える 10-feet 2008-1-22 15:08
             Re: attachMovieで複製したMCがなぜか消える mayor 2008-1-22 15:24
               Re: attachMovieで複製したMCがなぜか消える 10-feet 2008-1-22 15:42
                 Re: attachMovieで複製したMCがなぜか消える mayor 2008-1-22 16:14
                   Re: attachMovieで複製したMCがなぜか消える 10-feet 2008-1-24 18:49

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