【问题标题】:Cocos2D transition colour issueCocos2D过渡颜色问题
【发布时间】:2011-11-04 05:47:26
【问题描述】:

我正在用 cocos2d 编写一个基本游戏,每当我转换到我的一个场景时,屏幕上就会添加一种颜色?我要过渡到的场景我已经覆盖了 draw 方法,因为我需要渲染一系列彩色线条来显示游戏板,据我所知,这是唯一的方法画出来。

这是进行转换的代码:

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

然后gameScene中的draw方法如下:

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

其中 arcs 是我的自定义 Arc 对象的数组,它们构成了游戏板。

应用于屏幕的色调似乎取决于数组中第一条弧线的颜色。

有什么方法可以画一次线,而不是在draw方法中?

任何帮助将不胜感激。

【问题讨论】:

    标签: iphone objective-c cocos2d-iphone


    【解决方案1】:

    OpenGL 是状态驱动的。完成后将所有状态重置为之前的或默认状态是 OpenGL 中的好习惯。这适用于颜色以及线宽、纹理参数和其他 GL 状态。

    由于您没有重置颜色,因此上次设置的颜色将用于未来的 OpenGL 绘图方法,直到颜色发生变化。这就是场景转换显示彩色背景的原因。

    您将在 draw 方法结束时重置绘制颜色。这段代码展示了基本原理:

    - (void)draw {
        // use yellow color
        glColor4f(255, 255, 0, 255);
    
        // draw stuff here ...
    
        // reset color to default (black)
        glColor4f(0, 0, 0, 1);
    }
    

    【讨论】:

    • 这当然是一个进步,但是,现在我的过渡场景是黑色的!他们现在仍然只染黑色:)
    • 非常感谢 - 我将重置颜色更改为白色,颜色消失了!
    猜你喜欢
    • 1970-01-01
    • 2021-04-01
    • 2020-10-05
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2018-12-27
    • 2020-06-23
    相关资源
    最近更新 更多