2013-10-09 19 views
7

Próbuję przesyłać strumieniowo obrazy na GPU i przy użyciu SKSpriteNode. Obrazy nie są w moim pakiecie, a ja zastanawiałem się, czy istnieje jakiś sposób, aby współpracować z UIImage zamiast imageNamed:SKSpriteNode z UIImage z adresu URL

Mój obecny pomysł jest

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

Czy mogę dodać do ścieżki i wywołać obraz w ten sposób lub jaki byłby najlepszy sposób (jeśli jest to możliwe), aby dynamicznie odwoływać się do nazwy UII według nazwy, jeśli nie jest ona zawarta w pakiecie?

+0

try: URL -> NSData -> zapisz plik do dokumentów -> imageNamed: - ponieważ naprawdę nie chcesz tego robić za każdym razem, gdy twoja aplikacja uruchamia się lub ładuje scenę, ** musisz ** buforować obrazy, ponieważ na planach ograniczonych przepustowością jest dużo ludzi (nie wspominając o wolnych połączeniach). – LearnCocos2D

Odpowiedz

17

Tak, podobno SKTexture może pomieścić UIImage, i skończyło się coś wzdłuż linii

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

Masz swoje zdjęcie. Dlaczego addToFile: -> imageNamed: aby uzyskać obraz? Wystarczy zrobić:

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

Próbuję odwołać się do obrazu tak, jakby był w pakiecie. Dzięki! – aug2uag

5

Swift Odpowiedź

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)