foodArray という配列に入れる food というムービー クリップがあります。各食品を右に移動させる独自のクラス (Mover という名前) があります。それが一定のポイントに達すると、食べ物は消えます。
Main クラスに入れた食べ物を消すコードを次に示します。これをEnter Frameに入れました。
var l:int = foodArray.length - 1;
while ((l > -1))
{
if (foodArray[l].x > 1020)
{
removeChild(foodArray[l]);
foodArray.splice(l,1);
}
l = l - 1;
}
これが Mover クラスです
public function Mover(inputMC:MovieClip, xV:Number)
{
this.insMC = inputMC;
this.xVel = xV;
}
public function startMove():void
{
this.insMC.addEventListener(Event.ENTER_FRAME, this.updatePos);
}
protected function updatePos(e: Event):void
{
this.insMC.x += this.xVel;
}
public function stopMove():void
{
this.insMC.removeEventListener(Event.ENTER_FRAME, this.updatePos);
}
食べ物は問題なく消えていますが、消えるはずのポイントを過ぎても動き続ける食べ物があります。問題は配列の長さにあると推測していますが、よくわかりません。助けていただければ幸いです。:)
ここでファーストイレブンフードを作ります。それで、各タイムラインに 6 つの異なる写真を含む Food というムービークリップがあります。ランダムな食べ物の列を作りたいです。
function showFood()
{
const ROW = 11;
for (foodSeq = 0; foodSeq < ROW; foodSeq++)
{
randomFood = Math.ceil(Math.random() * 6);
food = new Food();
food.gotoAndStop(randomFood);
food.x = 1010 - (84 * (foodSeq % ROW));
food.y = 675;
addChild(food);
foodArray.push(food);
food.sequence = foodSeq;
food.code = randomFood;
food.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
//mover
mover = new Mover(food,XVEL);
moverArr.push(mover);
mover.startMove();
}
addFood();
}
そして、ここで一度に 1 つの食品を追加します。
function addFood()
{
randomFood = Math.ceil(Math.random() * 6);
food = new Food();
food.gotoAndStop(randomFood);
food.x = 76;
food.y = 675;
addChild(food);
foodArray.push(food);
food.sequece = foodSeq;
food.code = randomFood;
food.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
foodSeq++;
//mover
mover = new Mover(food,XVEL);
moverArr.push(mover);
mover.startMove();
//timer
timerFood.reset();
timerFood.addEventListener(TimerEvent.TIMER, timerForFood);
timerFood.start();
}
これは addFood 関数をトリガーするタイマーです
function timerForFood(t: TimerEvent)
{
if (timerFood.currentCount > 2)
{
addFood();
}
}