我只是Flash的初学者,我无法解决这个问题。
如何每次点击只执行一次动作脚本?
这是我的代码:
if ("foo")
结果: 它是一个警告和输出面板中的另一个错误.. 警告3596:重复的变量定义。 输出面板:TypeError:错误#1006:removeAt不是函数。 在ObstacleCourse_fla :: MainTimeline / loop()
请帮忙解决问题
FOR NEAL DAVIS 我使用的是flash player 11.2 r2o2
请注意,这是不我的整个脚本
答案 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>