2016-03-10 3 views
0

Я пытаюсь создать игру, в которой вам нужно щелкнуть по кругам. Каждый круг меняет цвет, когда вы нажимаете на него. Я хочу, чтобы он сказал «поздравления», когда были нажаты все круги, но на данный момент он показывает «поздравления» сразу после нажатия одного круга. Любая идея, как я мог это исправить?Распечатать текст при изменении цвета пути onclick

var text = new PointText(view.center); 
text.content = 'Congrats'; 
text.visible = false; 
text.style = { 
    fontFamily: 'Courier New', 
    fontWeight: 'bold', 
    fontSize: 100, 
    fillColor: 'black', 
    justification: 'center' 
} 

for (l = 0; l < balls.length; l++) { 
    balls[l].onClick = function(event) { 
     counter++ 



    this.fillColor = '#860d2b'; 
    var areAnyCoral = false; 
    for (var j = 0; j < balls.length; j++) { 
     if (balls[j].fillColor === 'coral') { 
      areAnyCoral = true; 
     } 
    }; 
    if (areAnyCoral === false) { 
     text.visible = true; 
    } 

} 

}

+0

Что вы здесь видите, насколько я могу судить. Где настроена переменная шаров? В частности, как им назначается fillColor? – dgig

+0

Вот целый код http://goo.gl/MBN5jB – Naomi

+0

выглядит так, как будто вы создаете шары, все имеют fillColor, равный 'coral', поэтому, когда вы нажимаете, ваши шары [j] .fillColor == = 'коралл' всегда верен. – dgig

ответ

1

Я думаю, вы должны проверять против counter, а не цвет заливки, для text.visible собственности. Имеет ли это смысл?

var counter = 0; 
var ball1 = { 
    color: "notCoral" 
}; 

var ball2 = { 
    color: "notCoral" 
} 

var balls = [ball1, ball2]; 

balls.forEach(function(ball) { 
    ball.onClick = function(event) { 
    if (ball.color == "notCoral") { 
     ball.color = "coral"; 
     counter++; 
    } 

    if (counter == balls.length) { 
     text.visible = true; 
    } 
    } 
}); 
+0

Да, это имеет большой смысл, а не на 100% уверен, что я смогу его реализовать, но я думаю, что это должно сработать! Спасибо – Naomi

+0

Спасибо, сумел это сделать. вот результат http://naomikudren.com/Lightswitch/ – Naomi

0

На самом деле, вам нужно изменить:

balls[j].fillColor === 'coral'; 

к:

balls[j].fillColor.equals('coral'); 

потому что FillColor является объектом, вы должны использовать "равно" метод для сравнения строк цвета например: http://paperjs.org/reference/color/#equals-color