2009-12-17 15 views
5

मैं कोकोस 2 डी में .gif एनीमेशन चलाने की कोशिश कर रहा हूं। इसके लिए मैं पुस्तकालय glgif का उपयोग कर रहा हूँ। अब, एनीमेशन प्रदर्शित करने के लिए मैं निदेशक को रोक रहा हूं, एनीमेशन दिखाने के लिए एक सबव्यू जोड़ रहा हूं और एनीमेशन के बाद मैं निदेशक को फिर से शुरू कर रहा हूं। हालांकि, मैं निदेशक की स्थिति फिर से शुरू करने में सक्षम नहीं हूं और यह खाली दिखाता है। इसलिए मैंने इस निदेशक को रुकने और फिर से शुरू किए बिना यह कोशिश की और यह अभी भी काम नहीं कर रहा। मैंने एनीमेशन से पहले निर्देशक को अलग करने की कोशिश की और बाद में इसे वापस जोड़ दिया और यहां तक ​​कि काम नहीं किया।कोकोस 2 डी निदेशक रोकें/समस्या जारी करें

तो क्या आवेदन में निदेशक को रोक/निलंबित करने का कोई तरीका है और ठीक से पुनर्स्थापित करना वापस आ गया है?

धन्यवाद।

कोड का नमूना:

[[Director sharedDirector] pause]; 
[[Director sharedDirector] detach]; 
AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
[del.window addSubview:del.viewController.view]; 
[del.window makeKeyAndVisible]; // this is code to call glgif class and start anim. 
//code to resume the director 
AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
[[Director sharedDirector] resume]; 
[[Director sharedDirector] attachInView:del.window]; 
MScene *m = [MScene node]; 
[[Director sharedDirector] replaceScene:m]; 
+0

आप कोकोस 2 डी का किस संस्करण का उपयोग कर रहे हैं? क्या आप एक कोड नमूना पोस्ट कर सकते हैं? आप किस निदेशक का उपयोग करते हैं? इसे रोकने/फिर से शुरू करने के लिए आप क्या उपयोग करते हैं? – nash

+2

ध्यान रखें कि 'रोकें' वास्तव में निदेशक को रोक नहीं देती है। इसके बजाए आप निदेशक को बता रहे हैं कि आपका गेम एक रुका हुआ राज्य है, और निदेशक अभी भी चल रहा है, लेकिन एक (बहुत) कम फ्रेमरेट पर प्रतिक्रिया देता है। 'रेज़्यूम' निदेशक को पूर्ण लक्ष्य फ़्रेमेट पर दौड़ने को फिर से शुरू करने के लिए कहता है। –

उत्तर

0

इसकी संभव अपने त्रुटियों में से कुछ हैं देते हैं/अलग करने, दिखा/विचारों को छुपाने का एक परिणाम के रूप। मुझे और मेरी टीम केवल attachInView पर applicationDidFinishLoading पर कॉल करें और यदि हम कोकोस के शीर्ष पर अन्य विचारों में बदलना चाहते हैं तो हम sendToBack या bringToFront प्रतिनिधि विंडो विंडो पर कॉल का उपयोग करते हैं। एक शॉट के लायक हो सकता है। अगर मुझे समझ में आता है या नहीं तो मुझे बताएं कि मैं कुछ नमूना कोड में टॉस कर सकता हूं।

2

यदि यह एक साधारण ओवरले है, तो बस रोकें और अपनी UIKit कॉल सीधे करें। इस तरह:

- (void)playerChanged 
{ 
    [[CCDirector sharedDirector] pause]; 
    UIAlertView *alert = [[[UIAlertView alloc] 
     initWithTitle:NSLocalizedString(@"CHANGEPLAYER", nil) 
     message:nil 
     delegate:self 
     cancelButtonTitle:nil 
     otherButtonTitles:NSLocalizedString(@"OK", nil), 
     nil 
    ] autorelease]; 
    [alert show]; 
} 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    (void)alertView; 
    (void)buttonIndex; 

    [[CCDirector sharedDirector] resume]; 
} 

तुम सच में पूरे खिड़की पर ले जा रहे हैं, तो यह पूरी तरह से

[[CCDirector sharedDirector] end]; 

निपटाने और अपने intialization फिर से करना और runWithScene फोन जब तुम वापस जाओ। अलग/संलग्न नृत्य अच्छी तरह से या लगातार काम नहीं करता प्रतीत होता है।

0

पूरी तरह से सुनिश्चित नहीं है कि यह यहां मदद कर सकता है, लेकिन यह उल्लेखनीय है: CCDirector रोक विधि एनीमेशन को पूरी तरह से नहीं रोकता है बल्कि बस इसे धीमा करता है। StopAnimation विधि पूरी तरह से इसे रोक देता है। तो शायद रोकेंएनीमेशन/प्रारंभएनीमेशन इसके बजाए रोकें/फिर से शुरू करें इस समस्या को हल कर सकते हैं।

संबंधित मुद्दे