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控件也差不多可以按这个套路来了。

转载于:https://www.cnblogs.com/baozou/p/3273437.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac terminal下解压缩命令大全

sudo tar zxvf wordpress-p1.tar.tgz tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz 解压1:g…

JS JAVASCRIPT 判断两个日期相隔多少天

var days daysBetween(2016-11-01,2016-11-02);/*** 根据两个日期,判断相差天数* param sDate1 开始日期 如:2016-11-01* param sDate2 结束日期 如:2016-11-02* returns {number} 返回相差天数*/function daysBetween(sDate1,sDate2){//Dat…

Yii2.0 ActiveForm Input Fields

2019独角兽企业重金招聘Python工程师标准>>> 之前5月学习Yii2的时候发现的一个不错的博客内容,这里转载保存。 Use the namespace For ActiveForm Active Form Begin And End Text Input Field TextArea Field Password Input Field HTML5 Email I…

【RK3399Pro学习笔记】十三、ROS中的坐标系管理系统

目录TF功能包能干什么?TF坐标变换如何实现?例程view_framestf_echorviz平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本:Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 记录自【古月居】古月ROS入门21讲 | 一学就会的ROS机…

本地搭建wp,更新升级时需要ftp的解决办法

https://jingyan.baidu.com/article/fd8044fa2e7af35031137af2.html 本地安装完mysql,php,apache后,进行了wordpress的安装。安装完wordpress,发现wordpress已经有了新版本,点击“立即更新”后却跳转到一个填写ftp地址…

数据结构与算法-python描述-单链表

# coding:utf-8# 单链表的相关操作: # is_empty() 链表是否为空 # length() 链表长度 # travel() 遍历整个链表 # add(item) 链表头部添加元素 # append(item) 链表尾部添加元素 # insert(pos, item) 指定位置添加元素 # remove(item) 删除节点 # search(item) 查找…

【RK3399Pro学习笔记】十四、ROS中tf坐标系广播与监听的编程实现

目录创建功能包如何实现一个tf广播器创建tf广播器代码(C)如何实现一个tf监听器创建tf监听器代码(C)配置编译规则编译并运行python编写程序turtle_tf_broadcaster.pyturtle_tf_listener.py运行平台:华硕 Thinker Edge R…

SCOM数据库整理索引计划出错

我们为了提高数据库的访问效率,我们需要对数据库做优化,那么在这里我是希望对我的SCOM的SQL进行索引的整理。当我们在SQL的维护计划中创建了针对SCOM数据库进行重新组织索引的计划后,发现运行总是会失败,这是为什么呢?…

PL/SQL之高级篇

原文地址:http://www.cnblogs.com/sin90lzc/archive/2012/08/30/2661117.html 参考文献:《Oracle完全学习手册》 1.概述 本文主要介绍PL/SQL中的有名程序块:存储过程、函数、包头/包体及触发器的使用。而这些的基础是PL/SQL无名块的编写&…

下拉四级联动插件

http://www.jq22.com/jquery-info6023

Charles使用

主要还是移动端的使用技巧 常规使用:同一个wifi,设备开启代理,地址写本机,端口看Charles中的设置 下面说点不怎么常用但是蛮有用的 1.https 这个应该是蛮容易遇到的,设置其实也是蛮简单的 先来看下,未设置之…

最短路打印路径

#include <iostream>#include<string.h>#include<stack>#define M 100#define N 100using namespace std;typedef struct node{ int matrix[N][M]; //邻接矩阵 int n; //顶点数 int e; //边数 }MGraph; boo…

JS实现的五级联动菜单效果完整实例

https://www.jb51.net/article/106525.htm 本文实例讲述了JS实现的五级联动菜单效果。分享给大家供大家参考&#xff0c;具体如下&#xff1a; js实现多级联动的方法很多&#xff0c;这里给出一种5级联动的例子&#xff0c;其实可以扩展成N级联动,在做项目的时候碰到了这样一…

【RK3399Pro学习笔记】十五、ROS中launch启动文件的使用方法

目录Launch文件语法<launch><launch><launch><node><node><node>参数设置<param>/<rosparam><param>/<rosparam><param>/<rosparam><arg><arg><arg><remap><remap><…

关于有多少个1的计算

1、题目 输入一个十进制的数&#xff0c;输出 &#xff08;1&#xff09;、给定n&#xff0c;求出从1到n的所有整数中1的个数。&#xff08;暂用用f(n)表示&#xff09; &#xff08;2&#xff09;、求满足nf(n)的最小整数&#xff08;1除外&#xff09;。 #include <ios…

ABP+AdminLTE+Bootstrap Table权限管理系统第八节--ABP错误机制及AbpSession相关

返回总目录:ABPAdminLTEBootstrap Table权限管理系统一期 上一节我们讲到登录逻辑,我做的登录逻辑很简单的,我们来看一下abp module-zero里面的登录代码. #region Login / Logoutpublic ActionResult Login(string returnUrl ""){if (string.IsNullOrWhiteSpace(ret…

JQuery DataTables Editor---只修改页面内容

https://www.cnblogs.com/zjf1987/p/Editor.html

关于JAVA_HOME, CLASSPATH和PATH的设置

http://bbs.csdn.net/topics/120079565 1、PATH&#xff0c;这个是给WINDOWS操作系统用的&#xff0c;告诉命令行里&#xff0c;执行的命令行工具在那里&#xff0c;比如java,javac这都是命令行工具,你在运行里随便敲一个命令&#xff0c;操作系统怎么就知道你这个命令对应的程…

P2327 [SCOI2005]扫雷

题目描述 输入输出格式 输入格式&#xff1a; 第一行为N&#xff0c;第二行有N个数&#xff0c;依次为第二列的格子中的数。&#xff08;1< N < 10000&#xff09; 输出格式&#xff1a; 一个数&#xff0c;即第一列中雷的摆放方案数。 输入输出样例 输入样例#1&#xff…

天津海运[600751]股票

2019独角兽企业重金招聘Python工程师标准>>> 天津海运[600751]股票 转载于:https://my.oschina.net/chworld/blog/425583