2016-04-25 8 views
0

Ich habe mit der Programmierung mit SKCropNode begonnen. Mein Ziel ist es, ein gegebenes Bild für ein Spiel in kleinere Teile zu zerlegen (die später keine Rechtecke mehr sein können) (in denen die Benutzer diese Teile in richtige Positionen bringen müssen).SKCropNode von SpriteKit: Beziehung zwischen Positionen und Skalen?

Der Code für das Studium ist einfach wie die folgenden:

let center = CGPoint(x: self.frame.width * 0.5, y: self.frame.height * 0.5) 
    let imageNamed = "image1.jpg" 
    let sprite1 = SKSpriteNode(imageNamed: imageNamed) 
    sprite1.position = center 

    let mask1 = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 400, height: 400)) 
    mask1.position = center 

    let crop1 = SKCropNode() 
    crop1.maskNode = mask1 
    crop1.addChild(sprite1) 

    crop1.position = CGPointZero 
    self.addChild(crop1) 

Der Code läuft gut und eine beschnittene Bild zeigen, und ich konnte verstehen, wenn einige Dinge wie Größe oder eine Position zu ändern, sagen von sprite1.

Allerdings bin ich völlig verloren gegangen, wenn ich einige Positionen von sprite1, mask1 und crop1 ändere, besonders wenn ich sprite1 oder crop1 skaliere. Wenn zum Beispiel das gegebene Bild auf 0,35 herunterskaliert und dann in 5 x 5 Teile geteilt wird, weiß ich nicht, wie das Stück {0, 0} oder {4, 3} angezeigt wird, und zeigt es dann an seinen ursprünglichen Positionen an. Mit anderen Worten, ich kann den Inhalt und die Position der Ernte nicht kontrollieren.

Kann mir jemand einen Tipp oder einen kurzen Tutor geben über die Beziehung zwischen diesen Positionen (von sprite1, mask1 und crop1) einschließlich ihrer Skalen, in Bezug auf den Zweck des Spiels (zB muss ich nicht alles skalieren skalieren und nur positionieren, was benötigt wird)? Oder gibt es eine andere einfachere Art zu implementieren?

Antwort

0

Ich muss mich selbst beantworten. Die Antwort hier ist nicht über die Beziehung zwischen Positionen, Skalen von SKCropNode, SKSpriteNode und Masken, da es für mich immer noch kompliziert ist, plus Klasse SKCropNode ist nicht von SKSpriteNode subclassed, daher ist es schwerer, ihre Instanzen später zu programmieren. Es kann die Lösung für das Problem sein: Teilen Sie ein gegebenes Bild in kleinere.

Die Lösung ist ganz einfach, schaffen kleinere SKTexture von Ganzen:

let wholeTex = SKTexture(imageNamed: "myimage.jpg") 
let tex1 = SKTexture(rect: CGRectMake(0.25, 0.25, 0.5, 0.5), inTexture: wholeTex) 
let sprite1 = SKSpriteNode(texture: tex1)