2010-08-08 69 views
4

我用下面的代碼的cocos2d場景添加到視圖 - 控制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的Alpha值....所以我做到了..

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

} 

但它崩潰......不知道爲什麼....我有一個主任alloced消息..

」。 setDirectorType必須在第一次調用 到導演

誰能幫助.....提前感謝..

+0

做的事情並不清楚? – Rony 2010-08-08 13:03:25

+0

有幾個問題。 1.你在哪裏調用程序中的displaySharePage函數?這可能是你崩潰的原因。 2.視圖的Alpha值是一個CGFloat實例,您應該將其設置爲0.0f。然而,這是一個小問題,不要懷疑它會導致崩潰,但它有助於消除任何可能性。 3.您是否收到關於編譯程序的警告?如果是的話,他們是什麼? 4.如果你沒有設置alpha值,程序是否運行? – 2010-08-09 16:33:17

+0

我從cocos2d的helloscene調用displaySharePage函數...程序運行,如果我不訪問視圖屬性 – Rony 2010-08-10 05:03:15

回答

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