1

学校では、モバイル用の AS3 で基本的なゲームを作成しています。基本的に知っておく必要があるのは、ステージの幅 (380) (高さは関係ありません) の長方形が必要であり、数秒後にトップを生成することです。別のスポーンが発生し、このプロセスは別の言い方をするまで無限に繰り返されます。私はまだ多くのことを行っていないので、表示するコードはあまりありませんが、誰かがそれをどのように教えてくれるか教えていただければ幸いです。

産卵ではなく、動きを詰め込みました

var rectangle:Shape = new Shape;
var RecTimer:Timer = new Timer(10,10000);
RecTimer.addEventListener(TimerEvent.TIMER, fRecMovement);
RecTimer.start()


function fRecMovement (e:TimerEvent):void {

rectangle.graphics.beginFill(0xFF0000); // choosing the colour for the fill, here it is red
rectangle.graphics.drawRect(0, 0, 480,45.49); // (x spacing, y spacing, width, height)
rectangle.graphics.endFill();
addChild(rectangle); // adds the rectangle to the stage
rectangle.y +=1


}
4

1 に答える 1

0

新しいキーワードを使用して、何かを追加するたびに新しい形状を作成する必要があります。ただし、移動できるように、作成した各四角形を追跡する必要もあります。以下のコードでは、rectangles 配列はすべての長方形のリストです。次に、リストを調べて、各長方形を移動できます。

var RecTimer:Timer = new Timer(10,10000);
RecTimer.addEventListener(TimerEvent.TIMER, onTimer);
RecTimer.start();

var rectangles:Array = []; // a list of all the rectangles we've made so far

function spawnRectangle():void {
    var rectangle:Shape = new Shape();
    rectangle.graphics.beginFill(0xFF0000); // choosing the colour for the fill, here it is red
    rectangle.graphics.drawRect(0, nextRectangleY, 480, 45.49); // (x spacing, y spacing, width, height)
    rectangle.graphics.endFill();
    addChild(rectangle); // adds the rectangle to the stage

    rectangles.push(rectangle); // adds the rectangle to our list of rectangles
}

function moveAllRectangles():void {
    for each (var rectangle:* in rectangles) {
        rectangle.y += 1;
    }
}

function onTimer(e:TimerEvent) {
    spawnRectangle();
    moveAllRectangles();
}

これにより、タイマーが実行されるたびに新しい長方形が作成されますが、おそらくそれよりも遅くしたいと思うでしょう。たぶん、別のタイマーでそれを行うことができます。

また、このコードを実行し続けると、新しい四角形を作成し続けて停止しないため、速度が大幅に低下し、大量のメモリが使用されます。それを制限する方法を見つけられるかどうかを確認してください。

于 2015-10-22T23:42:31.367 に答える