Cocos2D 添加 UIView
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的更多相关文章
- 用layer添加UIView的动画
项目有时会遇到用UIView 添加动画的情况,这里我觉得在layer上添加动画比较好,因为可以详细地设定动画属性,方便理解 下面是一个旋转动画: -(void)roundBtnAction:(id)s ...
- Cocos2D添加精灵纹理滤镜实现图像复古效果的转换
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家知道Cocos2d本身是一个非常强悍的2d游戏引擎,其中自 ...
- self.view添加UIView时添加动画
CATransition *animation = [CATransition animation]; animation.delegate = self; animation.duration = ...
- 动态添加子视图 UIView 的正确方法
很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法 ...
- 【iOS开发】动态添加子视图 UIView 的正确方法
很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法 ...
- iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍
UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...
- iOS:UIView的block函数实现转场动画---单视图
使用UIView动画函数实现转场动画——单视图 + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration ...
- cocos2d制作动态光晕效果基础——blendFunc
转自:http://www.2cto.com/kf/201207/144191.html 最近的项目要求动态光晕的效果. 何谓动态光晕?之前不知道别人怎么称呼这个效果, 不过在我看来,“动态光晕”这个 ...
- cocos2d 制作动态光晕效果基础 —— blendFunc
转自:http://blog.csdn.net/yang3wei/article/details/7795764 最近的项目要求动态光晕的效果. 何谓动态光晕?之前不知道别人怎么称呼这个效果, 不过在 ...
随机推荐
- Django (十) 项目部署 1
阿里云部署项目 1, 购买阿里云ECS云服务器(可免费试用1个月) 2, 阿里云实例更换为Ubuntu 3, 安全组配置 4, xshell远程连接 5, 创建虚拟环境: 5.1 linux基本命令 ...
- UVa10375:选择与除法(唯一分解定理)
The binomial coefficient C(m,n) is defined as Given four natural numbers p, q, r, and s, compute the th ...
- typedef与复杂声明
参考 [1] http://www.cnblogs.com/bakari/archive/2012/08/28/2659889.html [2]<C专家编程> [3 ]http://www ...
- centos6.7版本下配置ssh密钥登录
需要提前说明的是我使用的系统是centos6.7的版本. 1.我使用的是Putty登录 #ssh-keygen (生成公钥和私钥的命令) 回车之后会提示密钥要存放的目录,默认的目录是当前目录下的.ss ...
- 本地连接远程Oracle数据库
由于项目开发测试,需要在本地连接远程的Oracle数据库 之前搭过环境,但是重装了系统,现在又重新装一遍 软件安装 连接远程Oracle需要两个软件: 一个Oracle客户端,instantclien ...
- vs 2017注册码 激活码
Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QFVisual Studio 2017(VS2017 ...
- 6、旋转数组的最小位置------------>剑指offer系列
题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...
- OpenCV中CvMat的初始化[转]
一)cvCreateMat创建和分配数据CvCreateMat会创建CvMat,并为CvMat分配数据.cvCreateMat可以配合cvInitMatHeader来初始化CvMat对象.因为CvCr ...
- CString的GetBuffer和ReleaseBuffer
GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能. CString ::GetBu ...
- 高效vim插件
目录[-] 高效vim插件 插件管理利器 高效插件集 NerdTree snipMate tagbar jedi-vim eclim c.vim vim-colorschemes vim配置 一个实例 ...