だから私は Action Script 3 と CS5.5 でこのゲームを作っています。あなたがやろうとしているのは、宇宙を飛んでいる間、小惑星を避けることです. バックグラウンドでゲーム全体を通して太陽系外の惑星が画面を下に移動するのはクールだろうと思いました。あなたが彼らを追い越して飛んでいるように見せるためにちょっと。私がこれを行った方法は、1 秒あたりのフレームごとに y 座標に 5 を追加することでした。y 座標が 600 (画面の下部) に達したら、同じことを行う新しい惑星を追加します。なんらかの理由で、土星に到達すると、すべてがおかしくなりました。土星が早く来て、天王星も早く来ました。何が起こっているのかわかりませんでした。私はこれにかなりの時間イライラしています。ここが問題だと思う部分です。
public function onTick(timerEvent:TimerEvent):void {
earth.PlanetMovement(5);
if (earth.y==600)
{
mars.PlanetsStart(300, -100);
addChild( mars );
levels=levels+5;
}
mars.PlanetMovement(5);
if (mars.y==600)
{
jupiter.PlanetsStart(300,-150);
addChild (jupiter);
levels=levels+10;
}
jupiter.PlanetMovement(5);
if (jupiter.y==600)
{
saturn.PlanetsStart(300,-155);
addChild (saturn);
levels=levels+20;
}
saturn.PlanetMovement(5);
if (saturn.y==600)
{
uranus.PlanetsStart(300,-160)
addChild ( uranus);
levels=levels+25;
}
uranus.PlanetMovement(5);
PlanetMovement と PlanetsStart は、Planets クラスの 2 つの関数です。さらに情報が必要な場合は、教えてください。
編集:さらに説明する必要があると思います。PlanetsStart は、各ムービークリップの開始座標を持つ関数です。したがって、地球が y 座標の 600 に達すると、火星は (300, -100) から始まります。その後、画面に追加されます。level は fps ごとにスコアを上げる変数です。PlanetMovement は、各ムービークリップが各 fps で移動する量です。>= を使用すると、スコアが上がりすぎます。
これはまさに何が起こるかです。地球はあるべき場所に現れます。その後、火星は時間通りに現れました。するとなぜか土星が火星の真ん中に現れ、木星。この後、土星が底に達し、天王星が現れます。その後、木星は底に到達し、すべてが正常に機能します。土星、天王星の順