症状

使用cocos2d 2.0和UIKit混合编程, 有一块用cocos2d编写的小程序, 将CCDirector push到一个UINavigationController里面. 虽然事先在后台初始化了cocos2d, 但在push的时候, CCDirector还是会显示为黑屏, 并且从右到左运动大概10%的距离后会卡一下, 然后push完成, 再过0.1s左右才会显示出来cocos2d的画面. 如下视频所示.

解决方案

网上对这个问题的讨论很少, 原因不是很清楚, 估计是因为cocos2d和UIKit使用了各自独立的OpenGL Context, 在push的时候, 两个context不一致, 导致cocos2d的buffer没有更新, 因此出现黑屏问题.

cocos2d论坛有一个类似的问题 http://www.cocos2d-iphone.org/forums/topic/cocos2d-2-0-device-ipad1-4-2-1-black-screen/

有一条建议是: Connect the CCGLView via IB and don’t init it via code.

果然, 就是这个问题!

因此, 要使用Interface Builder创建CCGLView, 而不能在代码里手动创建!

效果如下视频.

cocos2d 2.0和UIKit混合编程, Push CCDirector的时候出现黑屏的天坑的更多相关文章

  1. cocos2d-x与UIKit混合编程实现半透明效果

    关键词 cocos2d-x, UIKit, transparent 问题 cocos2d-x使用一个专门的OpenGL View进行渲染, 它的渲染和UIKit是分开进行的, 因此我们使用时一般是把c ...

  2. 【转载】ANSYS的APDL与C语言混合编程(实例)

    原文地址:http://www.cnblogs.com/lyq105/archive/2010/05/04/1727557.html 本文讨论的不是利用C语言为ANSYS写扩展(或者说是用户子程序), ...

  3. matlab2016b和c# .net4.0混合编程

    参考:https://www.cnblogs.com/eniac12/p/4390845.html 主要想用c#写软件界面,利用matlab绘图,或者用里面的遗传算法. 我的环境是:Win10 64位 ...

  4. 玩转cocos2d-x lua-binding, 实现c++与lua混合编程

    引言 城市精灵GO(http://csjl.teamtop3.com/)是一款基于cocos2d-x开发的LBS社交游戏, 通过真实地图的探索, 发现和抓捕隐匿于身边的野生精灵, 利用游戏中丰富的玩法 ...

  5. swift 与 OC 混合编程

    原文地址:http://www.cocoachina.com/swift/20150608/12025.html 一.解决问题 Swift项目需要使用封装好的Objective-c组件.第三方类库,苹 ...

  6. c语言环境初始化&c语言和汇编混合编程

    bootloader通常会分为两个阶段:第一阶段采用汇编语言来编写,主要是一些核心的初始化工作(内存,时钟的初始化),第二阶段使用C语言来编写,主要是它会完成一些板载硬件的初始化(串口,网口)然后其启 ...

  7. 如玫瑰一般的PHP与C#混合编程

    故事背景是这样的,有一套项目,服务器端是用C#写的,为了完成某种事情,它需要使用到一个组件,这个组件很小但很重要,很不巧的是,这个这个组件是用PHP语言写的,如果为了使用这个组件而专门搭建一个PHP的 ...

  8. C和C++混合编程中的extern "C" {}

    引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif ...

  9. C# 托管和非托管混合编程

    在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难.   最直接的实现托管与非托管编程的方法就是 ...

随机推荐

  1. 创建Maven Module时报错:The parent project must have a packaging type of POM

    创建Maven Module时报错:The parent project must have a packaging type of POM 解决的办法,是把父项目的Packaging改成pom:

  2. iOS开发技巧 - 使用UISegmentedControl来对信息进行分组

    (Swift) import UIKit class ViewController: UIViewController { var segmentedControl:UISegmentedContro ...

  3. gzcms技术开发文档

    1.输出统一的json格式ajaxJSON.cs: 2.web.config注册html控件:3.gzcms.contrls开发控件库:4.form序列化提交$(this).serializeJson ...

  4. Mysql5.7初始化成空密码或随机密码的方式

    命令在此:mysqld --initialize-insecure --user=mysql 文档表明,使用-initialize生成随机密码,使用-initialize-insecure生成空密码. ...

  5. sublime text执行PHP代码

    新建编译系统 { "cmd": ["php", "$file"], "file_regex": "php$&q ...

  6. 使用Laya引擎开发微信小游戏

    在支持微信小游戏的游戏引擎中,Cocos,Egret,Laya都对小游戏的开发提供了很多强大的支持.前段时间正好抽空研究了一下这块的内容,现做一个总结,针对如何使用Laya引擎开发微信小游戏给大家做一 ...

  7. C# 将一个string数组转换为int数组

    int[] channelCIdArr = Array.ConvertAll(channelIdStr.Split(','),s=>int.Parse(s));

  8. ODI Studio拓扑结构的创建与配置(MySQL)

    拓扑结构的创建与配置 一.概念解释 Topology Manager主要用来管理下面5类任务,并将信息存储在主资料库中,供所有模块共享使用. 物理体系结构: 定义各种技术及其数据服务器.物理架构.物理 ...

  9. Java ReEntrantLock (Java代码实战-001)

    Lock类也可以实现线程同步,而Lock获得锁需要执行lock方法,释放锁需要执行unLock方法 Lock类可以创建Condition对象,Condition对象用来使线程等待和唤醒线程,需要注意的 ...

  10. Java实现的简单神经网络(基于Sigmoid激活函数)

    主体代码 NeutronNetwork.java package com.rockbb.math.nnetwork; import java.util.ArrayList; import java.u ...