0

私はこの Flash CS6 アクション スクリプト 3.0 のすべてにまったく慣れていないので、AS3 のムービー クリップ配列にレア ドロップ チャンスを適用する別の方法を見つけたいと思っていました。敵がより頻繁に落ちるため、敵に対してかなりうまく機能するランダムチャンスコードがありますが、プレイヤーがキャッチしてライフを得るために、ハートがめったに落ちないようにしたいと思います。

これが私がこれまでに持っているコードです。あまりにも多くの心を落とします。数値をいじってみましたが、悪化するだけのようです。助言がありますか?

function makeHeart():void
{
    var chance:Number = Math.floor(Math.random() * 60);
    if (chance <= 1 + level)
    {
        var tempHeart:MovieClip;
        tempHeart = new Heart();
        tempHeart.speed = 3;
        tempHeart.x = Math.round(Math.random() * 800);
        tempHeart.cacheAsBitmapMatrix = tempHeart.transform.concatenatedMatrix;
        tempHeart.cacheAsBitmap = true;
        trace("tempHeart");
        addChild(tempHeart);
        hearts.push(tempHeart);
    }
}
4

1 に答える 1

1

うーん、これは質問が単純すぎるか、単に理解できなかったかのどちらかです。しかし、私がそれを正しく理解していれば、ここに方法があります:

ハートが落ちる確率を 1% にしたいとしましょう。変数にNumber クラスを使用していて、chanceMath.random() も Number を返すため、変換は必要ありません。

Math.random() は、1 を含まない 0 から 1 の間の数値 (float) を返します。

したがって、1% のコードは次のようになります。

var chance:Number = Math.random();
if (chance <= 0.01)
{
    //enter code here
}

はい、不要な関数を呼び出す回数が減るため、動作が速くなります。Math.random() は 1/100 をはるかに超える非常に正確な数値を提供するため、可能性のある可能性のためにはるかに少ない数値を作成することができます。Math.random() から返される 1 つの値を次に示します。

Math.random(); // 0.9044877095147967
于 2013-08-21T01:35:56.453 に答える