2009-12-17 43 views
5

Tôi đang cố phát một hình động .gif trong cocos2D. Đối với điều này tôi đang sử dụng glgif thư viện. Bây giờ, để hiển thị các hình ảnh động tôi đang tạm dừng Giám đốc, thêm một subview để hiển thị các hình ảnh động và sau khi các hình ảnh động được thực hiện tôi đang nối lại giám đốc. Tuy nhiên, tôi không thể tiếp tục trạng thái của Giám đốc và nó hiển thị trống. Vì vậy, tôi đã thử điều này mà không cần tạm dừng và tiếp tục đạo diễn này và nó vẫn không hoạt động. Tôi cũng đã cố gắng tách các đạo diễn trước khi hoạt hình tha và thêm nó trở lại sau đó và thậm chí không làm việc.Giám đốc Cocos2D Tạm dừng/Tiếp tục phát hành

Vì vậy, có cách nào để tạm dừng/tạm ngừng Giám đốc trong ứng dụng và khôi phục đúng cách không?

Cảm ơn.

mẫu Mã số:

[[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

Bạn đang sử dụng phiên bản Cocos2D nào? Bạn có thể gửi mẫu mã không? Bạn sử dụng đạo diễn nào? Bạn sử dụng gì để tạm dừng/tiếp tục? – nash

+2

Hãy nhớ rằng 'tạm dừng 'không thực sự tạm dừng Giám đốc. Thay vào đó, bạn đang nói với Giám đốc trò chơi của bạn đang ở trạng thái tạm dừng và Giám đốc phản hồi bằng cách vẫn chạy, nhưng với tốc độ khung hình thấp hơn (nhiều). 'resume' yêu cầu Giám đốc tiếp tục chạy ở tốc độ khung hình mục tiêu đầy đủ. –

Trả lời

0

của nó có thể một số lỗi của bạn là do hậu quả của chú/tách, hiển thị/ẩn quan điểm. Tôi và nhóm của tôi chỉ gọi attachInView một lần vào số applicationDidFinishLoading và nếu chúng tôi muốn thay đổi trong các chế độ xem khác trên đầu trang của Cocos, chúng tôi sử dụng các cuộc gọi sendToBack hoặc bringToFront trên phiên bản cửa sổ đại biểu. Có thể đáng để bắn. Hãy cho tôi biết nếu điều đó có ý nghĩa hoặc nếu tôi không thể quăng vào một số mã mẫu.

2

Nếu đó là lớp phủ đơn giản, chỉ cần tạm dừng và thực hiện cuộc gọi UIKit của bạn trực tiếp. Như thế này:

- (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]; 
} 

Nếu bạn đang thực sự tiếp quản toàn bộ cửa sổ, sau đó vứt bỏ nó hoàn toàn

[[CCDirector sharedDirector] end]; 

và redo intialization của bạn và gọi runWithScene khi bạn quay trở lại. Vũ điệu tách rời/đính kèm dường như không hoạt động tốt hay nhất quán.

0

Không hoàn toàn chắc chắn nếu nó có thể giúp đỡ ở đây, nhưng nó là đáng nói đến: CCDirector tạm dừng phương pháp không ngừng hoạt hình hoàn toàn nhưng chỉ làm chậm nó. Phương pháp StopAnimation hoàn toàn dừng nó. Vì vậy, có thể stopAnimation/startAnimation thay vì tạm dừng/tiếp tục có thể giải quyết vấn đề này.

Các vấn đề liên quan