2010-08-08 5 views
4

J'utilise le code suivant pour ajouter scène cocos2d à un viewcontrollerAjouter scène 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]; 
} 

Et maintenant je dois définir la valeur alpha de self.view .... donc je l'ai fait ..

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

} 

Mais ...... ne sais écrasements pas pourquoi .... je suis le message ..

« Un directeur a été ventilés entre. setDirectorType doit être le premier appel au directeur »

quelqu'un peut-il aider ..... avance merci ..

+0

fait la chose pas clair ?? – Rony

+0

Quelques questions. 1. Où appelez-vous la fonction displaySharePage dans votre programme? Cela pourrait être la cause de votre accident. 2. La valeur alpha d'une vue est une instance de CGFloat, vous devriez la définir comme 0.0f. Ceci est un point mineur cependant, ne soupçonnez pas que cela causera l'accident, mais il est bon d'éliminer toutes les possibilités. 3. Recevez-vous des avertissements lors de la compilation de votre programme? Si c'est vrai, que sont-ils? 4. Le programme s'exécute-t-il si vous ne définissez pas la valeur alpha? –

+0

j'appelle la fonction displaySharePage de helloscene de cocos2d ... le programme s'exécute si je n'accède pas à la propriété de vue – Rony

Répondre

1

De l'erreur, il semble que l'une des deux choses se passe:

  1. viewDidLoad est appelée plus d'une fois. Vous pouvez vérifier cela en ajoutant une instruction de log ou un point d'arrêt au début de la méthode. Cela vous aidera à trouver la cause première. Vous devez vous assurer que le code du directeur n'est appelé qu'une seule fois. Une façon (pas nécessairement la bonne) est de déplacer l'appel [CCDirector setDirectorType:] vers le délégué de votre application.

  2. Vous appelez [CCDirector setDirectorType:] ailleurs dans votre code. Cela semble peu probable, mais faire une recherche serait utile.

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]]; 
} 
Questions connexes