2016-05-31 1 views
1

In meinem aktuellen SKScene angezeigt wird, verwende ich UIGraphicsGetImageFromCurrentImageContext ein Bild von den aktuellen Grafiken auf dem Bildschirm zu erzeugen.ein Bild von dem Inhalt eines SKScene, die nicht

Allerdings würde Ich mag ein Bild aus einer Szene erzeugen, nicht auf dem Bildschirm. Eine, die ich erstellt, aber nicht angezeigt habe. Ist das möglich?

Der Grund dafür ist dies ein benutzerdefiniertes Bild zu erstellen ist für die Benutzer zu teilen, wenn sie eine hohe Punktzahl erreichen, die ähnlich, aber nicht die gleichen wie meine Haupt-Szene.

+0

wenn diese in irgendeiner Weise hilft: http://stackoverflow.com/a/19572286 EDIT: Oh, ich habe gerade gelesen, dass Sie nicht angezeigten Szene aufnehmen möchten ... Dann ist dieser Link wahrscheinlich nicht funktionieren .... Aber es könnte lesenswert sein – Whirlwind

Antwort

1

Hier ist eine Methode, die den Inhalt eines Knotens als PNG erfasst. Beachten Sie, dass das aktuelle SpriteKit beim Zugriff auf die CGImage-Eigenschaft einen Speicherverlust aufweist. Verwenden Sie dieses daher im DEBUG-Modus. Siehe

+ (NSData*) captureNodeAsPNG:(SKSpriteNode*)node skView:(SKView*)skView 
{ 
    NSData *data = nil; 

    @autoreleasepool { 
    SKTexture *captureTexture = [skView textureFromNode:node]; 

    CGImageRef cgImageRef = captureTexture.CGImage; 

    NSLog(@"capture texture from node as pixels : %d x %d", (int)CGImageGetWidth(cgImageRef), (int)(CGImageGetHeight(cgImageRef))); 

    UIImage *capImg = [UIImage imageWithCGImage:cgImageRef]; 

    data = UIImagePNGRepresentation(capImg); 
    } 

    return data; 
}