在碰撞AS3上生成随机文本

时间:2015-10-30 17:15:00

标签: actionscript-3 flash oop

当一个物体撞到另一个物体时,我想生成一些随机词。

我已经尝试过,但只有一个词出现,永远不会再改变。

如果我为随机文本创建一个新类或者在Main类中包含它足够好会更好吗?谢谢!

这是我目前的代码:

package  {
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;



public class Main extends MovieClip {

    public var cell:Cell;
    public var group:Array;
    public var gameTimer:Timer;
    public var score:int = 0;
    var array:Array = new Array ("Apples",
                                 "Bananas",
                                 "Grapes",
                                 "Oranges",
                                 "Pineapples"); //create an array of possible strings
    var randomIndex:int =  Math.random () * array.length;
    //public var randomTxt:String;





    public function Main() {

        group = new Array();


        gameTimer = new Timer (25);
        gameTimer.addEventListener(TimerEvent.TIMER,moveCell);
        gameTimer.start();
    }

    private function createCell(_x:Number = 0, _y:Number = 0):void {
        var cell:Cell = new Cell(_x, _y);
        group.push(cell);
        addChild(cell);
    }


     function moveCell (timerEvent:TimerEvent):void {

         if (Math.random() < 0.01) {
             var randomX:Number = Math.random()*800;
             var randomY:Number =  Math.random()*600;
             createCell(randomX, randomY);
         }


         for (var i:int = 0; i < group.length; i++)
         {
             var cell:Cell = Cell(group[i]);
             if (cell.hitTestObject(island))
             {
                 cell.parent.removeChild(cell);
                 group.splice(i,1);
                 score++;
                 txtWordDisplay.text = "Killed by" + array [randomIndex];


             }




         }

    scoreOutPut.text = score.toString();



    }


}

}

1 个答案:

答案 0 :(得分:0)

它始终是相同的单词,因为您只在程序开头设置randomIndex一次。

一个简单的解决方法是在碰撞发生时更新该值:

if (cell.hitTestObject(island))
{
    ...
    randomIndex =  Math.floor(Math.random () * array.length);
    txtWordDisplay.text = "Killed by" + array [randomIndex];
}