我有一系列随机产卵的收藏品。当他们与玩家发生碰撞时,他们会从舞台上移开并且得分增加了scoreValue。我希望阵列中的每个收藏品都有不同的得分值,但我还没有得到它。以下是我最近的所有相关代码。
public class Main_EnemySpawnTest_3 extends MovieClip
{
// variables
var player:Player = new Player;
var collectables:Array = [Collectable1, Collectable2, Collectable3];
var collectablesRandomNumber:int = Math.random() * (collectables.length);
var collectable = new collectables[collectablesRandomNumber];
var score:uint = 0;
// constructor function
public function Main_EnemySpawnTest_3():void
{
// listeners
addEventListener(Event.ENTER_FRAME, checkEveryFrame);
spawnCollectablesButton.addEventListener(MouseEvent.CLICK, spawnCollectablesClick);
}
// enter frame, check every frame
public function checkEveryFrame(event:Event):void
{
// score
messageDisplay.text = String (score);
}
// hit test
function hitTest (event:Event):void
{
// hit test with collectables
if (collectable.hitTestObject (player) == true)
{
var scoreValue:uint;
if (stage.contains (collectable))
{
if (collectables[0])
{
scoreValue = 100;
}
else if (collectables[1])
{
scoreValue = 300;
}
else if (collectables[2])
{
scoreValue = 700;
}
removeChild (collectable);
score = score + scoreValue;
}
}
}
}
目前,只需按一下按钮即可生成收藏品。如果有帮助的话,下面的代码如下。
// collectable spawn button
function spawnCollectablesClick (event:MouseEvent):void
{
var oldCollectable = collectable;
if (stage.contains (oldCollectable))
{
removeChild (oldCollectable);
}
var collectablePositionRandomNumber:int = Math.random() * 3;
var collectablePositionX:int = stage.width - (collectable.width * -0.5);
collectable = new collectables[Math.floor(Math.random() * collectables.length)];
collectable.x = collectablePositionX;
globalSpeed = 5;
if (collectablePositionRandomNumber == 0)
{
collectable.y = topPosition;
}
else if (collectablePositionRandomNumber == 1)
{
collectable.y = centerPosition;
}
else if (collectablePositionRandomNumber == 2)
{
collectable.y = bottomPosition;
}
addChild (collectable);
trace (collectable);
}
答案 0 :(得分:0)
问题来自if (collectables[0])
:只要collectables[0]
/ false
/ null
/ {{1},这将返回true }或0
。因此,您总是会添加100,并且始终会跳过NaN
s。
您可以在undefined
:
else if
然后用它来增加分数
spawnCollectablesClick
作为旁注,如果collectable.scoreValue = ...
,function hitTest (event:Event):void
{
// hit test with collectables
if (collectable.hitTestObject (player) == true)
{
score = score + collectable.scoreValue;
removeChild (collectable);
}
}
和Collectible1
都是不同的类,那么你就是在破坏课程的目的。如果3个事物具有相同的行为但事物的值不同,则它们都可以是具有不同成员变量值的同一个类的实例。