2013-10-09 13 views
7

Sto provando a trasmettere le immagini alla GPU e utilizzando SKSpriteNode. Le immagini non sono nel mio fagotto, e mi chiedevo se c'è qualche modo per lavorare con UIImage invece di imageNamed:SKSpriteNode con UIImage dall'URL

Il mio attuale idea è

URL -> NSData -> UIImage -> addToFile: -> imageNamed:

Posso aggiungere al percorso e chiamare l'immagine in questo modo, o quale sarebbe il modo migliore (è possibile) di fare riferimento dinamicamente a UII per nome quando non è incluso nel pacchetto?

+0

prova: URL -> NSData -> salva il file nei documenti -> imageNamed: - perché davvero non vuoi farlo ogni volta che la tua app inizia o carica una scena, devi ** memorizzare nella cache le immagini perché ci sono molte persone su piani limitati dalla larghezza di banda (per non parlare delle connessioni lente). – LearnCocos2D

risposta

17

Così, pare SKTexture può ospitare UIImage, e ho finito per qualcosa sulla falsariga di

NSString* urlString = @"http://superawesomeimage.com.jpg"; 
NSData* imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]; 
UIImage* theImage = [UIImage imageWithData:imageData]; 

SKView* theView = [[SKView alloc] initWithFrame:self.view.frame]; 
[self.view addSubview:theView]; 

SKScene* theScene = [SKScene sceneWithSize:theView.frame.size]; 

SKSpriteNode* theSprite = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImage:theImage]]; 
[theScene addChild:theSprite]; 
-1

Hai la tua immagine. Perché addToFile: -> imageNamed: per ottenere la tua immagine? Basta fare:

NSURL *yourURL = [NSURL URLWithString:@"www.somepage.com/yourimage.png"]; 
NSData *data = [NSData dataWithContentsOfURL:yourURL]; 
UIImage *yourimage = [UIImage imageWithData:data]; 
+0

Sto provando a fare riferimento all'immagine come se fosse in bundle. Grazie! – aug2uag

5

risposta Swift

let url = NSURL(string: imageURL) 
    let data = NSData(contentsOfURL: url!) //make sure your image in this url does exist, otherwise unwrap in a if let check 
    let theImage = UIImage(data: data!) 
    let Texture = SKTexture(image: theImage!) 


    let mySprite = SKSpriteNode(texture: Texture) 
    self.addChild(mySprite) 
Problemi correlati