だから私はこの bulletContainer クラスを取得しました。これはこれらすべての弾丸を発射し、クラスをムーブクリップに入れてステージに追加すると完全に正常に発射されます。bulletClass の関数を呼び出すと、存在しないというエラーが表示されるため、ムービー クリップに含めることはできません。さて、私の問題は、ステージにaddChild(bulletClass)を追加すると、動き/アニメーションを除いて、プログラムされたとおりに機能することです。弾丸は正常に動きますが、私が撃った場合を除いて、反対方向に撃ち、反対方向に撃つだけではなく、少し左に撃ちます(私がまっすぐ上を少し左に向けている場合)、完全に右に向けると回転して私と一緒に撃ちます。したがって、基本的には、私が言ったようにあらゆる点で、クラス(Movieclipを拡張する)でaddChild()を使用した場合のみです。私はしません すべてがチェックアウトされると混乱するだけなので、なぜ私のコードを提供するのかわかりません。おそらく、Movieclip を拡張するクラスの向きが Library MovieClips とは異なるように、どこかに変換があると思いますか?
このコードは bulletAdder() 関数内にあり、弾丸が bulletContainer で作成される唯一の場所です。
var localPlayer = Object(root).localSurvivor;
//Select what movieclip should go into the bullet
var newBullet;
newBullet = new bullet1;
//Create a local movieclip for this
var newBulletMC:MovieClip = new MovieClip;
newBulletMC.addChild(newBullet);
newBulletMC.x = setX;
newBulletMC.y = setY;
//trace(localPlayer.rotation);
//Create the newBullet class for movement
var localPlayerRotation = Object(root).localSurvivor.rotation;
trace(localPlayerRotation);
var newBulletClass:bulletClass = new bulletClass(localPlayerRotation, bulletLifetime);
//Add bulletMC to the bulletClass
newBulletClass.addChild(newBulletMC);
//Add to array
bulletArray.push(newBulletClass);
//Add to stage
localStage.addChild(newBulletClass);
これは、画面上を移動する弾丸である bulletClass です。
package com{
import flash.display.*
import flash.utils.*
public class bulletClass extends MovieClip{
public var lifetime = 0;
public var dir = 0;
var animationInt;
public function bulletClass(playerRotation, bLifetime:Number = 1){
dir = playerRotation
//Start life
animationInt = setInterval(animateBullet, 40);
}
private function animateBullet(){
this.x += 10 * Math.sin(dir * (Math.PI / 180));
this.y += 10 * Math.cos(dir * (Math.PI / 180));
}
}
}