0

我有一个显示分数和名称的 UITableView。我也有在屏幕上移动的动画对象..但是它们在 tableview 下并且无论有什么 z-index 值都不可见..我怎样才能让动画对象在我的 UITableView 之上?谢谢..

4

2 回答 2

1

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

在 cocos2d 中有一个 UIKit 视图在技术上是不可能的,因为 cocos2d 会同时在 UIKit 视图的前面和后面绘制节点。

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

原因是 cocos2d 是从 UIKit 的角度来看的。

于 2013-02-22T12:36:13.337 回答
0

您必须将 UITableView 添加为 CCDirector 的 openGLView 的子视图。

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

您所要做的就是将 UITableView 直接插入 UIWindow 并将其移动到 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
}
于 2013-02-22T07:22:17.370 回答