AS3 - hitTestObject时得分

时间:2012-06-03 10:38:53

标签: actionscript-3 flash

在这个游戏中,我制作了一些立方体,你必须避开它们。当你避开它时,它会一直摔倒并击中地面(scoreDetector),因此每当它击中地面时,我得到1分。问题是多维数据集的动画师保持循环(这就是我想要的),但通过这样做,分数计数器会删除该点,并在每次多维数据集的动画开始时不断添加和删除它。

代码:

var time:int;
var timer:Timer = new Timer(1000,0);
var score:int = 0;

score = 0;
scoreCounter.text = "Score:  " + score;

timer.addEventListener(TimerEvent.TIMER, cubeFall);

timer.start();

function cubeFall(t:TimerEvent) {

time++;

if (time == 3) {
    cube_1.play();
} else if (time == 10) {
    cube_2.play();
}

// Add Score

else if (cube_1.hitTestObject(scoreDetector)) {
score++;
scoreCounter.text = "Score:  " + score;
}
}

2 个答案:

答案 0 :(得分:1)

您好,您可以使用包含匹配元素的数组,如下所示:

var time:int;
var timer:Timer = new Timer(1000,0);
var score:int = 0;
var hittedObjects:Array = new Array();
score = 0;
scoreCounter.text = "Score:  " + score;

timer.addEventListener(TimerEvent.TIMER, cubeFall);

timer.start();

function cubeFall(t:TimerEvent) {

time++;

if (time == 3) {
    cube_1.play();
} else if (time == 10) {
    cube_2.play();
}

// Add Score

else if (cube_1.hitTestObject(scoreDetector) && hittedObjects.indexOf(cube_1)>0) {
score++;
scoreCounter.text = "Score:  " + score;
hittedObjects.push(cube_1);
}
}

答案 1 :(得分:0)

这是一个解决方案Khaled,很好的想法! :)但它不是数组的问题。 hitTest不应该在else if()语句中。它应该在它自己的if()语句中。其次,得分++;应该是hitTest if()语句中唯一的内容。 scoreCounter.text ="得分:" +得分; 应该在if()语句之外。这是它应该是什么样子。

var time:int;
var timer:Timer = new Timer(1000,0);
var score:int = 0;

score = 0;
scoreCounter.text = "Score:  " + score;

timer.addEventListener(TimerEvent.TIMER, cubeFall);

timer.start();

function cubeFall(t:TimerEvent) {

time++;

if (time == 3) {
    cube_1.play();
} else if (time == 10) {
    cube_2.play();
}

// Add Score

if (cube_1.hitTestObject(scoreDetector)) {
score++;
}
scoreCounter.text = "Score:  " + score;
}