使用openGLView的Cocos2D z-index问题

时间:2013-02-22 07:11:43

标签: uitableview cocos2d-iphone z-index nsopenglview

我有一个显示分数和名字的UITableView。我还有在屏幕上移动的动画对象。但是它们在tableview下面并且不管是什么z-index值都不可见..如何让动画对象在我的UITableView上面? 感谢..

2 个答案:

答案 0 :(得分:1)

在你继续之前(samfisher的解决方案可以将所有UIKit放在cocos2d视图下面)记住这一点:

在cocos2d中使用UIKit视图在技术上是不可能的,其中cocos2d同时在UIKit视图的前面和后面绘制节点。

换句话说: UIKit视图可以完全位于所有cocos2d节点之前,也可以完全位于所有cocos2d节点之后

原因是cocos2d是UIKit的观点。

答案 1 :(得分:0)

你必须添加UITableView作为CCDirector的openGLView的子视图。

所有带有对象的COCOS2D动画都在openGLView上进行,这显然低于TableView,所以z索引在这种情况下不会起作用。

您所要做的就是直接在UIWindow上插入UITableView并将其移动到openGLView下面。您也可以使用:

[<UIWindow> insertSubview:<TableView> belowSubview:<openGLView>];

您需要做的就是让您的openGLView透明,并确保您没有在CCLayer上添加背景图像(否则它将覆盖)

所以问题是如何使你的openGLView - 透明

-(void) initGLDefaultValues
{
    // This method SHOULD be called only after openGLView_ was initialized
    NSAssert( openGLView_, @"openGLView_ must be initialized");

    [self setAlphaBlending: YES];
    [self setDepthTest: YES];
    [self setProjection: CCDirectorProjectionDefault];

    // ***** NEW CODE: make open gl view transparent
    openGLView_.opaque = NO;
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

    // disable regular, opaque clear color
    //glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
        // ***** NEW CODE end
}