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

第一部分::

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

方法很简单:

[[[CCDirector sharedDirector] openGLView] addSubview:[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控件也差不多可以按这个套路来了。

Cocos2D 添加 UIView的更多相关文章

  1. 用layer添加UIView的动画

    项目有时会遇到用UIView 添加动画的情况,这里我觉得在layer上添加动画比较好,因为可以详细地设定动画属性,方便理解 下面是一个旋转动画: -(void)roundBtnAction:(id)s ...

  2. Cocos2D添加精灵纹理滤镜实现图像复古效果的转换

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家知道Cocos2d本身是一个非常强悍的2d游戏引擎,其中自 ...

  3. self.view添加UIView时添加动画

    CATransition *animation = [CATransition animation]; animation.delegate = self; animation.duration = ...

  4. 动态添加子视图 UIView 的正确方法

    很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法 ...

  5. 【iOS开发】动态添加子视图 UIView 的正确方法

    很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法 ...

  6. iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

    UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...

  7. iOS:UIView的block函数实现转场动画---单视图

    使用UIView动画函数实现转场动画——单视图 + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration ...

  8. cocos2d制作动态光晕效果基础——blendFunc

    转自:http://www.2cto.com/kf/201207/144191.html 最近的项目要求动态光晕的效果. 何谓动态光晕?之前不知道别人怎么称呼这个效果, 不过在我看来,“动态光晕”这个 ...

  9. cocos2d 制作动态光晕效果基础 —— blendFunc

    转自:http://blog.csdn.net/yang3wei/article/details/7795764 最近的项目要求动态光晕的效果. 何谓动态光晕?之前不知道别人怎么称呼这个效果, 不过在 ...

随机推荐

  1. 基于PHP的正则表达式

    用法 从某个字符抽取信息 用新文本替换匹配的文本 把字符串拆分成小块字符串组成的数组 基础 preg_match('/需要匹配的正则表达式/', '字符串'); 正则匹配模式 集合: [xxxx]-- ...

  2. Codeforces 1142C(转化、凸包)

    可以变换坐标:x' = x, y' = y - x ^ 2,如此之后可得线性函数x' * b + c = y',可以发现两点连边为抛物线,而其他点都在这条线下方才满足题意,故而求一个上凸壳即可. #i ...

  3. 渣渣菜鸡为什么要看 ElasticSearch 源码?

    前提 人工智能.大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需,大型企业早已淹没在系统生成的浩瀚数据流当中.大数据技术业已集中在如何存储和处理这些海量的数据上.Elast ...

  4. [转][android][利用JNI技术在Android中调用、调试C++代码]

    在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在Android中会生成Linux系统下的.so文件(好吧,其实我基本没用过Linux). 没写过 ...

  5. 借助sass的Maps功能使得响应式代码更有条理

    原文来自这里 本文综合了原文(by Jonathan Suh)以及笔者自己的理解. Introduction 众所周知,写代码与写维护性高的代码是两回事.而涉及到响应式,代码又特别容易变的杂乱.借助s ...

  6. slf4j介绍以及与Log4j、Log4j2、LogBack整合方法

    翻了一下百度和官网.这么介绍slf4j. slf4j 全称 Simple Logging Facade for Java,是日志框架的一种抽象,那么也就是说 slf4j 是不能单独使用的必须要有其他实 ...

  7. StarUML安装与Win7不兼容解决

    最近在学习建模工具(StarUML)发现 其他功能一切正常 但是无法显示代码导出功能, 正常界面如下: 我的安装确没有导出功能缺少C++,C# ,Java等导出功能 解决办法:     到StarUM ...

  8. hihocoder1829 Tomb Raider

    思路: 暴力枚举. 实现: #include <iostream> #include <set> #include <vector> using namespace ...

  9. 安装MySQLdb出现HAVE_WCSCOLL重定义问题的解决方法

    root@wodeyitian MySQL-python-1.2.3]# python setup.py install running install running bdist_egg runni ...

  10. NBUT 1115 Cirno's Trick (水)

    题意: 给出多个double数,去掉其最小的和最大的,再对余下的求均值. 思路: 再输入时将最大和最小去掉,顺便统计非最值的和,输出时除一下个数即可. #include <bits/stdc++ ...