2011-11-03 9 views
2

저는 cocos2d에서 기본 게임을 프로그래밍하고 있습니다. 내 장면으로 전환 할 때마다 색조가 화면에 추가됩니까? 내가 게임을 진행하는 장면은 드로잉 메서드를 재정의했습니다. 왜냐하면 게임 보드를 보여주기 위해 일련의 컬러 라인을 렌더링해야하고, 내가 그걸 그리는 유일한 방법이라는 것을 알고 있기 때문입니다. 여기 Cocos2D 전환 색상 문제

는 전환 수행하는 코드이다 :에

CCTransitionFadeBL *transition = [CCTransitionFadeBL transitionWithDuration:0.5 scene:gameScene]; 
[[CCDirector sharedDirector] replaceScene:transition]; 

그리고 그리기 방법을 다음과 같이 gameScene가 보이는 : 내 정의의 배열입니다

- (void)draw { 
for (Arc *a in arcs) { 

    MyPoint *start = a.start; 
    MyPoint *end = a.end; 

    MyPoint *startLocation = [nodeScreenPositions getElementAtRow:[start getX] column:[start getY]]; 
    MyPoint *endLocation = [nodeScreenPositions getElementAtRow:[end getX] column:[end getY]]; 

    ArcColour colour = a.colour; 

    switch (colour) { 
     case YELLOW: 
      glColor4f(255, 255, 0, 255); 
      break; 
     case BLUE: 
      glColor4f(0, 0, 255, 255); 
      break; 
     case RED: 
      glColor4f(255, 0, 0, 255); 
      break; 
     case GREEN: 
      glColor4f(0, 255, 0, 255); 
      break; 
     case PINK: 
      glColor4f(128, 0, 128, 255); 
      break; 
     case CYAN: 
      glColor4f(0, 255, 255, 255); 
      break; 
     default: 
      glColor4f(255, 255, 255, 1); 
      break; 
    } 
    glLineWidth(2.5f); 
    ccDrawLine(ccp([startLocation getX], [startLocation getY]), ccp([endLocation getX], [endLocation getY])); 
} 
} 

게임 보드를 구성하는 아크 오브젝트.

화면에 적용된 색조는 배열의 첫 번째 호의 색상에 따라 달라집니다.

방법을 사용하지 않고 선을 그릴 수있는 방법이 있습니까?

도움을 주시면 감사하겠습니다.

답변

3

OpenGL은 상태 기반입니다. 완료 후 모든 상태를 이전 상태 또는 기본 상태로 재설정하는 것이 OpenGL에서 좋은 방법입니다. 이것은 선 너비, 텍스처 매개 변수 및 기타 GL 상태뿐만 아니라 색상도 마찬가지입니다.

색상을 재설정하지 않으므로 색상이 변경 될 때까지 마지막으로 설정된 색상이 향후 OpenGL 그리기 방법에 사용됩니다. 이것이 장면 전환이 컬러 배경을 나타내는 이유입니다.

그리기 방법 끝에서 그리기 색상을 재설정해야합니다. 이 코드는 기본 원칙을 보여줍니다.

- (void)draw { 
    // use yellow color 
    glColor4f(255, 255, 0, 255); 

    // draw stuff here ... 

    // reset color to default (black) 
    glColor4f(0, 0, 0, 1); 
} 
+0

그러나 지금은 전환 장면이 검은 색입니다. 그들은 여전히 ​​검은 색을 띠고 있습니다. :) – haironfire907

+0

대단히 고마워요. 나는 리셋 컬러를 흰색으로 바꿨으며, 색조는 사라졌습니다! – haironfire907