iAd снижает частоту кадров в секунду?

#cocos2d-iphone #iad #frame-rate

#cocos2d-iphone #iad #частота кадров

Вопрос:

Баннер iAd снижает частоту кадров в секунду?

Действительно, с тех пор, как я добавил iAd, мой FSP — дерьмо. Мне было 59 лет всю игру, и теперь он варьируется от 35-50 кадров в секунду.

Любые идеи, пожалуйста, потому что моя игра почти не воспроизводится с этим баннером.

Спасибо за помощь.

Комментарии:

1. устройство? симуляторы кадров в секунду бессмысленны.

2. Многие недавние вопросы предполагают, что iAd начал замедлять игры (в том числе и Sprite Kit). Возможно, проблема, характерная для бета-версии iOS 8?

3. Спасибо за ответы. Я разрабатываю версию iOS 7.1, а не бета-версию 8. Я запускаю все на своем устройстве напрямую, а не с помощью симулятора. Спасибо.

4. Недавно я добавил iAd в игру 7.1 и не заметил заметного ухудшения пользовательского опыта (и не измерял)… но — я принудительно фиксирую частоту кадров в секунду на уровне 30, поскольку чувствую, что дрожание является наиболее важным фактором при оценке плавности игры. Если вы можете себе это позволить, попробуйте. Езда на дробовике на скорости, максимально приближенной к 60 кадрам в секунду, приводит к почти уверенной игре с джиттербагом на изометриях.

5. Привет, YvesBlorg, извините, но я не получил вашего совета, можете ли вы переформулировать, пожалуйста 🙂 (Я француз, лол).

Ответ №1:

Вы должны реализовать логику iAd в своем UINavigationController подклассе, которая была установлена в appDelegate . В моем коде это выглядит так:

 AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Create the main window
    window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
                                   pixelFormat:kEAGLColorFormatRGB565
                                   depthFormat:0
                            preserveBackbuffer:NO
                                    sharegroup:nil
                                 multiSampling:NO
                               numberOfSamples:0];

    // Enable multiple touches
    [glView setMultipleTouchEnabled:YES];

    director_ = (CCDirectorIOS*) [CCDirector sharedDirector];

    director_.wantsFullScreenLayout = YES;

    // Display FSP and SPF
    [director_ setDisplayStats:YES];

    // set FPS at 60
    [director_ setAnimationInterval:1.0/60];

//FEW LINES LATER

    // Create a Navigation Controller with the Director
    navController_ = [[MyNavigationController alloc] initWithRootViewController:director_];
    navController_.navigationBarHidden = YES;

    [self checkDeviceType];

    // setup iAds bannerView
    [self setupIADs];

    // for rotation and other messages
    [director_ setDelegate:navController_];

    // set the Navigation Controller as the root view controller
    [window_ setRootViewController:navController_];

    // make main window visible
    [window_ makeKeyAndVisible];

    return YES;
}

- (void)setupIADs {
    CGSize size = [[CCDirector sharedDirector] winSize];

    float bannerHeight = _isiPadRunning ? 66.0f : 50.0f;
    ADAdType bannerType = _isiPadRunning ? ADAdTypeMediumRectangle : ADAdTypeBanner;
    _bannerView = [[ADBannerView alloc] initWithAdType:bannerType];
    _bannerView.frame = CGRectMake(0, navController_.view.frame.size.height, size.width, bannerHeight);

    CGSize newBannerSize = [_bannerView sizeThatFits:CGSizeMake(size.width, bannerHeight)];
    _bannerView.frame = CGRectMake(0, navController_.view.frame.size.height,
                                   newBannerSize.width, newBannerSize.height);
    _bannerView.delegate = self;

    //get view
    UIView *mainView = [navController_ view];
    [mainView addSubview:_bannerView];
    [mainView setNeedsLayout];
}
 

Как вы можете видеть, я использую navController_ для размещения баннера iAd. Никаких падений кадров в секунду! 🙂
Пожалуйста, попробуйте. Для меня это помогло, и у меня нет падений или задержек в FPS. Все работает отлично.