Ich muss zwei UIColors vergleichen, aber aus irgendeinem Grund gibt es immer false zurück. Ich habe versucht zu vergleichen mit ==
und .isEqual()
, aber keiner von ihnen scheint zu funktionieren.Problem beim Vergleichen von UIColors in Swift
//This is a sample of the colors I have created
let blue_color = UIColor(red: 122/255, green: 180/255, blue: 190/255, alpha: 1)
//This is the SpriteNode I have to compare
let square = SKSpriteNode(color: randomColorController(), size: ksquaresize)
randomColorController() ist nur eine Funktion, die Farben und gibt es, so es wird aufgerufen, wenn Platz geschaffen wird randomisiert.
func randomColorController() -> UIColor {
let random = arc4random_uniform(3) + 1
switch random {
case 1:
let color = blue_color
return color
case 2:
let color = yellow_color
return color
case 3:
let color = yellow_color
return color
default:
let color = UIColor.clearColor()
return color
}
Dann, abhängig von der Position des Platzes ich geschaffen habe, wird es Kollision überprüfen Sie die Farbe des Quadrates zu vergleichen ich geschaffen habe und die Farben, die ich am Anfang initialisiert.
func checkCollision(currentTime: CFTimeInterval, Square: SKSpriteNode) -> Int{
let color = Square.color
print(color.isEqual(blue_color))
print(color.isEqual(red_color))
print(color.isEqual(yellow_color))
if Square.position.y >= 0 && Square.position.y <= 40 {
if color.isEqual(blue_color) && (Square.position.x < basesize.width) {
// ADDS 1 POINT TO THE SCORE LABEL
flag = 1
points += 1
} else if color.isEqual(red_color) && (Square.position.x > (basesize.width*2)){
flag = 1
points += 1
} else if color.isEqual(yellow_color) && (Square.position.x < (basesize.width*2)) && (Square.position.x > basesize.width) {
flag = 1
points += 1
} else {
flag = -1
}
}
Aber color.isEqual(blue_color)
oder eine der anderen Farben, scheint nicht zu funktionieren. Ich habe Square.color
und blue_color
(und die anderen) gedruckt, und sie stimmen überein. Aber es würde immer false
zurückgeben.
Sie müssen sicherstellen, dass die Farben in der gleichen Farbraum/Modell sind . Wenn sie nicht sind, werden sie nicht gleich sein. Versuchen Sie zuerst, die Farben zu konvertieren, um sicherzustellen, dass sie sich im selben Farbraum befinden. – rmp
Was meinst du damit Farben konvertieren? Wenn sie in der gleichen Klasse sind, sind sie nicht in demselben Raum? Und da ich die selbe Variable verwende, um die Farben einzustellen und später zu vergleichen, sind sie nicht die gleichen? –
Hat Swift das gleiche Problem mit der Ganzzahldivision, die Objective-C hat? Mit anderen Worten - gibt '122/255'' 0' oder die gewünschte '0.47843'? – rmaddy