2015-04-05 40 views
0

我有一个像这样的数组...AS3访问阵列中的元素只有一次

var pointsArray:Array = [100,200,250,1000,1500];

一个for循环...

for(var i:int = 0; i<27; i+=1) 
{ 
ach.scrollp.content["ach"+i].text = "Locked"; 
ach.scrollp.content["ach"+i].textColor = 0x666699; 
} 

和成就的功能...

if (TotalScore >= pointscollectedArray[0]) 
{ 
    ach.scrollp.content.ach0.text = "Unlocked"; 
    ach.scrollp.content.ach0.textColor = 0xFF9900; 
} 

等等等等

在所有在成就界面的数据显示没有问题。但我想要做的是在实际的游戏中显示一个影片剪辑,告诉玩家何时解锁成就。问题是我不知道如何仅在每次解锁成就时显示动画片段一次,即在下一个成就解锁之前动画片段不会再次显示。 我不知道如何只访问一次数组中的元素。

我是AS3的noob,所以我希望我已经正确地解释了一切。

干杯

回答

0

如果您重新设计了您的成就架构,那将是最好的。但对于一个简单的修复,像这样:

if (TotalScore >= pointscollectedArray[0] && 
    ach.scrollp.content.ach0.text != "Unlocked") 
{ 
    ach.scrollp.content.ach0.text = "Unlocked"; 
    ach.scrollp.content.ach0.textColor = 0xFF9900; 
    // play movie 
} 
+0

非常感谢。但它会显示影片剪辑是否解锁成就。 – 2015-04-07 00:08:40

+0

我的成就系统工作正常。游戏结束后,进入成就界面并正确显示。我试图做的是在游戏(测验)实际上正在进行时播放额外的影片剪辑。所以当一个成就在游戏中间解锁时,它会显示让玩家知道的影片剪辑。但是影片剪辑只能在每个成就中播放一次。因此,如果玩家获得100分,那么这是影片剪辑播放的第一个成就。直到他们达到新的水平(200分),它不应该玩。 – 2015-04-07 00:20:40

+0

我认为这将与拼接数组有关。假设一旦数组中的第一个值被读取,影片剪辑触发,那么该值将被删除,等等,直到数组中没有值。 – 2015-04-07 00:24:29

0

重新设计您的代码更好。我可以建议你这样的事情:

var iLevel: int = 0; // This is the achievement that is reached. Player starts from 0 but if your game support save, iLevel can be different; 
var nTotalLevels: int = 27; // This is total amount of achievements you have 

for (var i:int = 0; i < iLevel; ++i) 
{ 
    //This code show unlocked achievements 
    ach.scrollp.content["ach"+i].text = "Unlocked"; 
    ach.scrollp.content["ach"+i].textColor = 0xFF9900; 
} 
for (var k:int = iLevel; k < nTotalLevels; ++k) 
{ 
    // This code show locked achievements; 
    ach.scrollp.content["ach"+k].text = "Locked"; 
    ach.scrollp.content["ach"+k].textColor = 0x666699; 
} 

所以在这种情况下,当玩家获得新成果,可以显示像这样

if (TotalScore >= pointscollectedArray[0]) 
{ 
    ++iLevel; 
    ach.scrollp.content["ach"+iLevel].text = "Unlocked"; 
    ach.scrollp.content["ach"+iLevel].textColor = 0xFF9900; 
    // play movie 
} 

我希望我知道你需要什么样的权利;

+0

感谢您的答案,但我可能没有解释的不够好。是的,有26个领域需要显示锁定,否则。但是这些水平并不是全部收集到的。还有其他5个其他的成就,如玩,正确,这就是为什么我的代码是这样的。我认为你的代码可以工作,如果它只是一个变量。游戏也保存了成就。 – 2015-04-07 00:10:44