У меня есть массив случайно созданных предметов коллекционирования. Когда они сталкиваются с игроком, они удаляются со сцены, а счет увеличивается на 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);
}
Как вы создаете/создаете свои коллекционные предметы? Позвольте мне угадать, ваш счет всегда увеличивается на 100? Когда вы делаете 'if (collectables [0])', он просто ищет правдивое значение. Таким образом, пока результат 'collectables [0]' не равен null/false/undefined/negative number, он будет оцениваться как истинный. Поскольку у вас есть то, что предположительно является объектом в 'collectables [0]', условие всегда будет истинным. – BadFeelingAboutThis
На данный момент я работаю над этим кодом, и в нем собираются предметы коллекционирования с нажатием кнопки. В конце концов, это будет таймер, массив на основе плитки или что-то еще. Я положу код в исходное сообщение – crabdog62482
Collectable1, 2 и 3 из массива collectables. Каждый из них представляет собой свой коллекционный предмет (прямо сейчас, разные цветные и формованные монеты). Мне нужно, чтобы они награждали разные оценки, когда они сталкивались с игроком. Сейчас код работает, но он всегда набирает только 100 очков. Мне нужно каждое столкновение монет, чтобы дать его правильное значение точки, поэтому 100 для Collectable1, 300 для Collectable2 и 700 для Collectable3. – crabdog62482