2010-03-20 7 views
9

Próbuję przeprowadzić synchronizację obrazu między dwiema tymi samymi aplikacjami na różnych iPhone'ach. Chciałbym wysłać NSSet * z jednego urządzenia do drugiego (co, jak sobie wyobrażam, obejmuje enkapsulację w NSData), a następnie odszyfrować to z powrotem do NSSet, a następnie użyć go w funkcji typu touchesMoved. Czy jest to możliwe, czy też powinienem zamiast tego pracować nad synchronizacją UIImages? Obawiam się, że synchronizacja UIImage będzie miała zbyt duże opóźnienie w interakcji w czasie rzeczywistym.NSSet do NSData, a następnie wycofać się ponownie dla GameKit?

Dzięki za pomoc!

Odpowiedz

14

Rozumiem, że masz do czynienia z zestawem UITouchów. To nie zadziała, ponieważ UITouch nie implementuje NSCoding (myślę).

Będziesz musiał wyodrębnić, jakie informacje potrzebujesz z każdego UITouch, a następnie umieścić to w czymś, co jest zgodne z NSCoding.

NSSet * someSet = ...; 
NSData * serializedSet = [NSKeyedArchiver archivedDataWithRootObject:someSet]; 

Następnie wyślij te dane za pomocą zestawu gier.

Drugie urządzenie pobiera dane, przekształca je z powrotem w zestaw.

NSData * receivedData = ....; 
NSSet * set = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData]; 

W takim razie możesz wywołać metodę, która jest potrzebna do przetworzenia zestawu. Ponieważ prawdopodobnie zmieniasz niektóre komponenty interfejsu użytkownika, upewnij się, że wywołasz selektor, aby działał w głównym wątku.

Również tego typu rzeczy działają tylko wtedy, gdy zdarzenia dotykowe, z którymi masz do czynienia, są bezpaństwowcami, co oznacza, że ​​nie ma znaczenia, gdzie dotknięcie było wcześniej. W przeciwnym razie może to powodować pewne problemy. Lepiej może wydobyć ideę tego, co zmieniło się po zdarzeniach dotyku, a następnie wysłać to do drugiego urządzenia i zaktualizować tylko inne urządzenie z deltami tego, jak zmieniła się UIImage (innymi słowy, jaki rodzaj przetwarzania ma wystąpił w obrazie na drugim urządzeniu).

+0

Dzięki za pomoc! Czy istnieje sposób na porównywanie UIImage lub sprawdzanie delt między dwoma UIImages? Również, czy UIImage imageWithData potrzebuje formatu obrazu JPG do działania? Wydaje mi się, że używasz PNG. Nie sądzę, że będę w stanie przesłać dotknięcia, ponieważ niestety polegam na ich stanie. Jeszcze raz dziękuję za odpowiedź! –

Powiązane problemy