闪存执行循环 - 每次点击只消耗一次健康

时间:2017-04-09 12:02:18

标签: actionscript-3 flash

我只是Flash的初学者,我无法解决这个问题。

如何每次点击只执行一次动作脚本?

这是我的代码:

if ("foo")

结果: 它是一个警告和输出面板中的另一个错误.. 警告3596:重复的变量定义。 输出面板:TypeError:错误#1006:removeAt不是函数。     在ObstacleCourse_fla :: MainTimeline / loop()

请帮忙解决问题

FOR NEAL DAVIS 我使用的是flash player 11.2 r2o2

请注意,这是我的整个脚本

3 个答案:

答案 0 :(得分:1)

不要使用visible属性,因为这不会移除瓶子或敌人(它仍然存在,导致脚本触发每一帧,你只是无法看到它)

而是使用healthbottle1.parent.removeChild(healthbottle1);或类似的东西。

这样做是从名为显示列表的东西中删除对象。 Google" AS3显示列表"有关这方面的更多信息。

你可以用凶手做同样的事情,但我认为你不想让它们在击中一次后立即消失。因此,您可以使用某种反击机制立即将玩家设置回来(足够的像素让敌人停止击中他)或者让玩家无敌1秒或2秒。许多游戏都实现了这种类型的机制(通常具有使角色在无敌期间闪现的视觉效果)。如果您选择其中一种方法,请尝试一下,如果您遇到困难,请告诉我们。祝好运。

答案 1 :(得分:0)

使用我在评论中讨论的方法:

假设您有3个名为healthbottle1等的健康瓶。

var hBottleArray:Array = [healthbottle1,healthbottle2,healthbottle3];

然后在主游戏循环中:

for (var i:int = hBottleArray.length-1; i >= 0; i--){
    if (character.hitTest(hBottleArray[i])){
        health++;
        // any code you want to execute for when a health bottle is picked up
        hBottleArray.removeAt(i);//this removes the bottle from the array so it doesn't get checked again. This will stop your continued health increase. 
    }
}

for (var的那一部分是“for循环”的开头。你可以google那个。另一个技巧是使用数组。谷歌也是如此。

答案 2 :(得分:0)

好的@Neal davis我只是把瓶子放在舞台上,没有阵列的杀手很好,谢谢你的帮助! 我宁愿在将来学习未来的答案(Duh xD)并搜索它们,这样我就可以避免在stackoverflow中提出很多问题......但是对于人们回答这个问题也很有用......谢谢!谢谢! p>