2010-08-08 3 views
4

Я использую следующий код для добавления Cocos2D сцены в ViewControllerДобавить Cocos2D сцены UIViewController

- (void)viewDidLoad { 
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 


    if(! [CCDirector setDirectorType:CCDirectorTypeDisplayLink]) 
     [CCDirector setDirectorType:CCDirectorTypeDefault]; 

    [[CCDirector sharedDirector] setPixelFormat:kPixelFormatRGBA8888]; 

    [CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA8888]; 


    [[CCDirector sharedDirector] setDeviceOrientation:kCCDeviceOrientationPortrait]; 
    [[CCDirector sharedDirector] setAnimationInterval:1.0/60]; 

    [[CCDirector sharedDirector] attachInView:self.view]; 
    ///adding HelloWorld scene to the view... 
    [[CCDirector sharedDirector] runWithScene: [HelloWorld scene]]; 
    [super viewDidLoad]; 
} 

А теперь мне нужно установить значение альфа self.view .... так что я сделал это ..

-(void)displaySharePage 
{ 
    self.view.alpha=0; 

} 

Но он разбился ...... не знаю почему .... я получил сообщение ..

«директор был alloced. setDirectorType должен быть первый вызов к Режиссерская

кто может помочь ..... заранее спасибо ..

+0

делает вещь не ясно ?? – Rony

+0

Несколько вопросов. 1. Где вы вызываете функцию displaySharePage в своей программе? Это может стать причиной вашего краха. 2. Альфа-значение представления - это экземпляр CGFloat, вы должны установить его как 0.0f. Однако это незначительный момент, но не подозревайте, что это приведет к сбою, но его удастся устранить любые возможности. 3. Вы получаете предупреждения о компиляции своей программы? Если так, то кто они? 4. Выполняется ли программа, если вы не устанавливаете значение альфа? –

+0

i call displaySharePage function from helloscene of cocos2d ... программа запускается, если я не получаю доступ к свойству вида – Rony

ответ

1

От ошибки, это выглядит как одна из двух вещей происходит:

  1. viewDidLoad вызывается более одного раза. Вы можете проверить это, добавив оператор журнала или точку останова в начале метода. Это поможет вам найти основную причину. Вы должны убедиться, что код режиссера вызывается только один раз. Один из способов (не обязательно правильный путь) - переместить вызов [CCDirector setDirectorType:] на ваш делегат приложения.

  2. Вы звоните [CCDirector setDirectorType:] в другое место в своем коде. Это кажется маловероятным, но поиск его будет полезен.

1
@synthesize window; 

- (void)loadView { 
    // Initialization code 
    CC_DIRECTOR_INIT(); 
    CCDirector *director = [CCDirector sharedDirector]; 
    //landscape 
    [director setDeviceOrientation:kCCDeviceOrientationPortrait]; 
    [director setDisplayFPS:YES]; 

    //turn on multi-touch 
    EAGLView *cocosView = [director openGLView]; 
    [cocosView setMultipleTouchEnabled:YES]; 

    self.view = cocosView; 

    //default texture formats... 
    [CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA8888]; 

    [[CCDirector sharedDirector] runWithScene:[MainGame scene]]; 
} 
Смежные вопросы