zoukankan      html  css  js  c++  java
  • Cocos2D 添加 UIView

    cocos2d是使用继承于ccnode的结点类型的层。但是我想用一个opengl来绘制,就简单的情况来说必须得加一个uiview。现转载如下:

    第一部分::

    使用Cocos2D开发游戏和应用程序的时候,时常有些功能用系统控键很容易就实现,而cocos2d很麻烦,这时候就需要在cocos2D的程序中添加UIView或者UIView的子类。如果需要响应重力感应来支持旋转,可以向cocos2d程序中添加UIViewController的子类。

    方法很简单:

    [[[CCDirector sharedDirectoropenGLViewaddSubview:[UIView view]];

    第二部分,转自人人,目前看不太懂,以后应该用的到

    Cocos2d中对UIView的使用

    Cocos2d中想使用UIView等UIKit系的控件,最常用常见的方法,就是通过openGLView来做,虽然这个非常简单,还是简述下吧。

    比如,现在我想在cocos2d中使用UIImageView这个控件,非常简单,直接上代码。

    CGRect frame = [[[CCDirector sharedDirector] openGLView] frame];
    _animateImageView = [[UIImageView alloc] initWithFrame:frame];
    [[[CCDirector sharedDirector] openGLView] addSubview:_animateImageView];

    不用了的时候。

    [_animateImageView release];
    [_animateImageView removeFromSuperview];

    诺,这样呢,有一个问题,使用的UIImageView若不remove掉的话总是显示在最上面,再加个Sprite啥的也加不上去。恰好,这次需要的图比较大(320*480),还想借助UIImageView的动画功能,这下郁闷了。

    怎么样才能即能让他顺利展示又能再上面添加Sprite或者CCMenu等呢。

    OK, 直接给出解决方案吧。因为一旦采用openGLView addSubView的话肯定是不行的,那一个解决思路是在openGLView下插入一层View, 同时把openGLView设置成透明的,这样不就行了。

    代码如下,首先要动的是AppDelegate,在openGLView下加入一层。

            //Set glView by wordsworth Mar.26             
    [glView setMultipleTouchEnabled:YES];
    glView.opaque = NO;
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    glClear(GL_COLOR_BUFFER_BIT);


    //add a view by wordsworth Mar.26, in order to insert another view in MainBoardLayer
    overView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    overView.opaque = NO;
    overView.backgroundColor = [UIColor clearColor];
    [overView addSubview:glView];

    [window addSubview:overView];

    最后,把我们的ImageView尽情的写入openGLView下面吧,这样在上面加上各种各样的CCSprite、CCMenu等不用担心不显示啦。

    AppDelegate * delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [delegate.overView insertSubview:_animateImageView belowSubview:[[CCDirector sharedDirector] openGLView]];

    其他的UIKit控件也差不多可以按这个套路来了。

  • 相关阅读:
    Java实现 LeetCode 416 分割等和子集
    Java实现 LeetCode 416 分割等和子集
    在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
    【详解】嵌入式开发中固件的烧录方式
    嵌入式系统烧写uboot/bootloader/kernel的一般方法
    Linux下USB烧写uImage kernel
    Xmanager连接CentOS的远程桌面
    命令行利器Tmux
    u-boot中分区和内核MTD分区关系
    uboot环境变量与内核MTD分区关系
  • 原文地址:https://www.cnblogs.com/baozou/p/3273437.html
Copyright © 2011-2022 走看看