2010-05-07 77 views
0

我正在研究iPhone上的cocos2d游戏。游戏完美运作。
现在我想在我的游戏菜单中添加一个admob广告。我可以看到广告,但在玩了几秒钟(或几分钟)后,游戏崩溃(没有错误信息...)
你能看到问题在哪里吗?将admob添加到带有cocos2d的iPhone应用程序会使游戏崩溃...?

Menu.h

@interface Menu : CCColorLayer <AdMobDelegate> { 
    AdMobView *adMobAd; 
    NSTimer *refreshTimer; 
} 

Menu.m

+(id) scene {...} 
-(id) init {...} 
-(void) dealloc {...} 

- (void)didReceiveAd:(AdMobView *)adView { 
    adMobAd.frame = CGRectMake(-260, 432, 320, 48); 
    CGAffineTransform makeLandscape = CGAffineTransformMakeRotation(M_PI * 0.5f); 
    makeLandscape = CGAffineTransformTranslate(makeLandscape, -216, -134); 
    adMobAd.transform = makeLandscape; 
    [[[CCDirector sharedDirector] openGLView] addSubview:adMobAd]; 
    [refreshTimer invalidate]; 
    refreshTimer = [NSTimer scheduledTimerWithTimeInterval:AD_REFRESH_PERIOD target:self selector:@selector(refreshAd:) userInfo:nil repeats:YES]; 
} 

- (UIViewController *)currentViewController { 
    return nil; 
} 

- (void)onEnter { 
    adMobAd = [AdMobView requestAdWithDelegate:self]; 
    [adMobAd retain]; 
    [super onEnter]; 
} 

- (void)onExit { 
    [adMobAd removeFromSuperview]; 
    [adMobAd release]; 
    [super onExit]; 
} 

- (void)refreshAd:(NSTimer *)timer { 
    [adMobAd requestFreshAd]; 
} 

- (NSString *)publisherId { 
    return @"zzzzzzzzzzzzzz"; 
} 

- (UIColor *)adBackgroundColor { 
    return [UIColor colorWithRed:0.2 green:0.6 blue:1 alpha:1]; 
} 

- (UIColor *)primaryTextColor { 
    return [UIColor colorWithRed:1 green:1 blue:1 alpha:1]; 
} 

- (UIColor *)secondaryTextColor { 
    return [UIColor colorWithRed:1 green:1 blue:1 alpha:1]; 
} 

- (BOOL)mayAskForLocation { 
    return NO; 
} 

谢谢! :-)

回答

1

我建议你摆脱NSTimer并使用CCTimer来代替(并使用CCScheduler安排它)。

您可以使用此代码做到这一点:

refreshTimer = [CCTimer timerWithTarget:self 
            selector:@selector(refreshAd:) 
            interval:AD_REFRESH_PERIOD]; 
    [[CCScheduler sharedScheduler] scheduleTimer:refreshTimer]; 
+0

非常感谢,现在还没有崩溃! – pimpampoum 2010-05-07 20:47:31

+0

很高兴听到它的工作! – pgb 2010-05-07 20:48:17