मेरे आवेदन में मुझे कण प्रणाली की तरह कुछ चाहिए था इसलिए मैंने निम्न किया:कुशलतापूर्वक कई छवियों को कैसे दिखाएं? (आईफोन प्रोग्रामिंग)
जबकि एप्लिकेशन प्रारंभ होता है, मैं एक यूआईएममेज
laserImage = [UIImage imageNamed:@"laser.png"];
UIImage * लेजर इमेज को अपने नियंत्रक के इंटरफ़ेस में घोषित किया जाता है। अब हर बार मुझे एक नया कण चाहिए, यह कोड एक बनाता है:
// add new Laserimage
UIImageView *newLaser = [[UIImageView alloc] initWithImage:laserImage];
[newLaser setTag:[model.lasers count]-9];
[newLaser setBounds:CGRectMake(0, 0, 17, 1)];
[newLaser setOpaque:YES];
[self.view addSubview:newLaser];
[newLaser release];
कृपया ध्यान दें कि छवियां केवल 17px * 1px छोटी हैं और model.lasers सभी आंतरिक गणना ग्राफिकल आउटपुट से अलग करने के लिए एक आंतरिक सरणी है। तो मेरे मुख्य ड्राइंग लूप में मैंने सभी UIImageView की स्थिति को मेरे मॉडल में गणना की गई स्थिति में सेट किया है। Lasers array:
for (int i = 0; i < [model.lasers count]; i++) {
[[self.view viewWithTag:i+10] setCenter:[[model.lasers objectAtIndex:i] pos]];
}
मैंने टैग को 10 तक बढ़ाया क्योंकि डिफ़ॉल्ट 0 है और मैं सभी को स्थानांतरित नहीं करना चाहता डिफ़ॉल्ट टैग के साथ विचार।
तो एनीमेशन लगभग 10-20 छवियों के साथ ठीक दिखता है लेकिन लगभग 60 छवियों के साथ काम करते समय वास्तव में धीमा हो जाता है। तो मेरा सवाल यह है: क्या ओपनजीएल ईएस में शुरू किए बिना इसे अनुकूलित करने का कोई तरीका है?
यह सही उत्तर है। आपका कोड तब तक ठीक काम करेगा जब तक कि आपके उपयोग CALayers और प्रत्येक का उपयोग उसी परत छवि पर सेट समान परत.contents का उपयोग न करें। ओपनजीएल में अपना पूरा गेम रिवायर करना अधिक होगा, आपको केवल यूआईएममेज व्यू को आवंटित करने की आवश्यकता नहीं है, जो आपके कार्यान्वयन के मुद्दे की जड़ है। Http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/CoreAnimation_guide/SettingUpLayerObjects/SettingUpLayerObjects.html#//apple_ref/doc/uid/TP40004514-CH13-SW12 देखें – MoDJ