سؤال

لا أستطيع حقًا العثور على إجابتي بعد التصفح (ليس الكثير من الموضوعات على Cocos2d مع مركز اللعبة)

لقد قمت حاليًا بإعداد مركز Sandbox Game Center الخاص بي وأتمكن من المصادقة ، لكن عندما أقوم بإنشاء لوحة المتصدرين ، يتم إطلاقها بشكل جانبي في صورة أفترضها. حاول تدوير المنظر ولكن لا شيء. تعمل لعبتي فقط في وضع المناظر الطبيعية. أنا أقوم بتشغيل بيتا 3 0.99.5. هنا هو الكود الخاص بي للرجوع إليه.

tempVC = [[RootViewController alloc] init];

GKLeaderboardViewController *leaderboardController = [[[GKLeaderboardViewController alloc] init] autorelease];

if (leaderboardController != nil)
{
    leaderboardController.leaderboardDelegate = self;
    [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];
    [tempVC presentModalViewController:leaderboardController animated:YES];
}

حقا سوف نقدر أي مساعدة. الحصول على أي استجابة من لوحة COCOS2D.

تعديل:

تم إصلاحه عن طريق تغيير الدوران التلقائي إلى CCDirector. علاوة على ذلك ، واجهت مشاكل في فقدان وظائف اللمس المتعدد بعد إظهار Gamecenter. يجب أن يستخدم هذا الفصل عن المجلس:

[tempVC dismissModalViewControllerAnimated:YES];
[tempVC.view.superview removeFromSuperview];
هل كانت مفيدة؟

المحلول 2

تم إصلاحه عن طريق تغيير الدوران التلقائي إلى CCDirector. علاوة على ذلك ، واجهت مشاكل في فقدان وظائف اللمس المتعدد بعد إظهار Gamecenter. يجب أن يستخدم هذا الفصل عن المجلس:

[tempVC dismissModalViewControllerAnimated:YES];
[tempVC.view.superview removeFromSuperview];

نصائح أخرى

= واجهت هذه المشكلة وكنت أمزق شعري لعدة أيام ، لكنني في النهاية حصلت على العمل بشكل مثالي في وضع المناظر الطبيعية ، بغض النظر عن الطريقة التي يحمل بها المستخدم الهاتف. إنه غريب بعض الشيء ، وإذا كان أي شخص يعرف أفضل ، فيرجى إبلاغي بذلك!

1 - يجب أن أحصل على عرض (من وحدة التحكم التي تستدعي لوحة المتصدرين) في صورة ، في حالتي المنجزة في IB

2 - يعمل فقط إذا كنت تدعم اتجاه الصورة (حتى لو كان يشبه المناظر الطبيعية) -

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

3 - تحتاج بعد ذلك إلى تغيير حجم وتدوير لوحة المتصدرين -

[self presentModalViewController: leaderboardController animated: YES];

leaderboardController.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(0.0f));
leaderboardController.view.bounds = CGRectMake(0, 0, 480, 320);
leaderboardController.view.center = CGPointMake(240, 160);

4 - يا بريستو! إنه يعمل بشكل جيد. أتمنى أن تعمل معك أيضا.

إذا كان ذلك قد يساعد ، فقد وجدت أن إزالة Gkleaderboard من Gkleadboard ليس كافيًا ببساطة ، لذلك بعد استخدامك

tempvc.view.superview removeFromSuperView] ؛

يجب عليك أيضا استخدام

إطلاق TEMPVC] ؛

بدون هذا ، يقوم GkleaderboardViewController ببعض الأشياء الغريبة ، مثل ما بعد المكالمة الثانية ، فهي لا تدور تلقائيًا في العرض.

أتمنى أن يساعد ذلك

باستخدام هذا على COCOS2D V1.0.1 ، أحدث إصدار مستقر اعتبارًا من 19 أبريل 2012 ، هذا في الواقع لا يسمح لـ VC بالاختفاء. ربما يدير هذا بدلاً من ذلك:

[tempVC dismissModalViewControllerAnimated:YES];
[[[tempVC view] superview] performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1.2];
[tempVC performSelector:@selector(release) withObject:nil afterDelay:1.3];

كان الصحيح هو تنفيذ هذه الفئة وتضمينها:

.h

#import <GameKit/GameKit.h>

@interface GKLeaderboardViewController (additions)
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation;
-(NSUInteger)supportedInterfaceOrientations;
@end

.m

#import "GKLeaderboardViewController+additions.h"

@implementation GKLeaderboardViewController (additions)
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}
@end

كان لديه نفس المشكلة في إطلاق GC في صورة على iPad عندما كانت لعبتي COCOS2D في المناظر الطبيعية. تم إصلاح هذا من خلال استخلاص وحدة تحكم GameKit الخاصة بي من RootViewController بدلاً من UiviewController.

interface gcController: RootViewController {

بمجرد أن أواجه نفس المشكلة ، تابعت مدونة كونور دينمان التي تعمل بالنسبة لي هنا هو الرابط
http://connordenman.com/post/15554858770/presenting-a-modal-view-controller-in-cocos2d-iphone

يتم استخدام gkleaderboardviewController لعرض لوحة المتصدرين الافتراضية ، وهي صورة عرض فقط. لعرض لوحة المتصدرين للمناظر الطبيعية ، يجب عليك تنفيذ عرض المتصدرين المخصص الخاص بك.

تحرير: منذ الكتابة الأولية لهذا ، تم تحسين gkleaderboardViewController للعمل على ما يرام في أي اتجاه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top