Cocos2D中使用CCDrawNode绘制几何图形崩溃的解决

在cocos2D v3.x中已经不能像在v2.x中那样直接调用ccDrawXXX函数来绘制几何图形了.

我们可以使用CCDrawNode或者CCRenderer来绘制图形.

但是官方的Api手册中说的很清楚,CCDrawNode只推荐放在游戏的调试中调用,因为改变其状态必须先删除再重新添加,导致在绘制大量复杂几何图形时性能会很差.

在cocos2D v2.x中直接调用OpenGL的绘制一般放在draw方法中,但是在v3.4中实际测试发现,将CCDrawNode的绘制放在draw会导致App崩溃,错误大意为不能在遍历数组时改变其中的元素状态.

我推测是因为在draw中会遍历其中的可绘制节点,其中就包括了我们添加的CCDrawNode,然而在draw中我们修改了CCDrawNode的状态,所以App会崩溃.

换一种方法,将CCDrawNode的绘制放在update中即可.

当然,这样做只是在绘制节点会随着游戏状态发生改变时才有必要,如果绘制的节点永远不发生变化,直接放到类实例的初始化中就可以了.

时间: 2024-07-31 07:58:32

Cocos2D中使用CCDrawNode绘制几何图形崩溃的解决的相关文章

【IOS-COCOS2D游戏开发之七】在COCOS2D中添加/删除系统组件,并解决VIEW设置透明会影响VIEW中的其他组件的问题!【11月28日更新解决添加组件COCOS2D动画停止播放的BUG】

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/455.html 11月28日:-----------      有的童鞋说添加嘞组件(UIScrollView)后操作组件时Cocos2d的动画停止不懂嘞,我测试下,果然是,下面是解决方法: 首先大家在项目中搜索:CCDirectorIOS,找到CCDirectorIOS.m类,然后找到如下代码: 1 2 3

绘制几何图形:使用android.graphics类

范例说明 "如何在和机上绘制2D图形呢?"这是许多android游戏开发都是常提到的问题,在android SDK 当中,并没有Java Graphics2D的函数可以使用,而是使用android.graphics底下的类来绘制2D向量图.这个package提供了许多在手机上绘制图形的类与方法,其中Canvas上,而Paint(Android.graphics.Paint)类则像是彩色铅笔,给予不同的调协,即可绘制不同颜色.不同种类效果的向量图形. 本范例将运用Paint对象(绘笔)的

【Android开发】图形图像处理技术-绘制几何图形

常见的几何图形包括点.线.弧.矩形等.在Android中,Canvas类提供了丰富的绘制几何图形的方法,通过这些方法,可以绘制出各种几何图形.常用的几何图形的绘制方法如下所示:1. 画一个圆使用的是drawCircle:canvas.drawCircle(cx, cy, radius, paint);x.y代表坐标.radius是半径.paint是画笔,就是画图的颜色; 2. 在画图的时候还要有注意,你所画的矩形是实心(paint.setStyle(Paint.Style.FILL))还是空心(

Cocos2d中update与fixedUpdate的区别(五)

在真实情况中update:和fixedUpdate方法如何去调用? 由上所述,所以update方法在每帧被调用1次,从而给你一个机会去更新你的游戏对象的状态在其绘制之前.而fixedUpdate:方法在一个恒定的速率中被调用,同样给你一个机会去反映出各个帧之间的状态,甚至丢掉的那些帧里. 下面是当帧率高而稳定的情况示意图: 在Cocos2D中包括update:和fixedUpdate:的间隔默认被设置为1/60每秒.所以在理想的世界中对象变化过程应该如上图所示:update:和fixedUpda

css3绘制几何图形的例子

  1.圆形 示例: 思路给任何正方形元素设置一个足够大的 border-radius 就可以把它变成一个圆形.代码如下 html: <div class="size example1"></div> css: .size{ width:200px; height: 200px; background: #8BC34A; } .example1{ border-radius:100px; }  2.自适应椭圆  思路border-radius 这个属性还有另外一

Android简明开发教程十四:Context Menu绘制几何图形

上下文相关菜单(Context Menu)类同PC上按鼠标右键显示的菜单,在Android平台上是长按来激活Context Menu,Context Menu一般用来显示和当前UI内容相关的菜单. Context Menu的用法和Option Menu非常类似: 首先是创建 菜单资源,在res/menu 下新建menu_context_shape.xml,用来显示Oval,Pear,Shape2D: <?xml version="1.0″ encoding="utf-8″?>

电脑中IE浏览器出现出错崩溃等问题如何解决

  有一部分用户会在电脑中使用系统自带的IE浏览器,有时候IE浏览器添加了很多自动加载的插件,更改了一些有关的设置,可能就会造成IE浏览器出错崩溃等问题的产生.如果出现了这样的问题,可以简单通过下面的方法进行解决. 1.打开IE浏览器; 2.从右上角打开Internet选项; 3.点击切换到"高级"选项卡,点击"重置"按钮; 4.勾选"删除个性化设置",再点击"重置"; 5.等待进行重置IE设置操作; 6.完成后会提示需要重新

cocos2d中新增的auto类型会增加编译器的负担吗

问题描述 cocos2d中新增的auto类型会增加编译器的负担吗 新人提问,我发现现在很多书都用auto,但是其实有些类型明明是可以确定下来的,为什么不直接写呢?编译器自动识别类型不是会增加编译器负担,还是这样写有什么好处,求指教 解决方案 这么做的确会增加编译器的负担,但是因为机器的时间不值钱,人的时间值钱.如果你回顾过去30年的软件的发展,你会发现它遵循逆摩尔定律.实现相同功能的软件,每18个月变慢一倍. 20年前,我们用8MB内存的486,可以流畅运行Word 95,实现文字编辑,现在我们

Cocos2d中update与fixedUpdate的区别(一)

原文链接 关于这个问题cocos2d中的fixedUpdate:(或者是Unity中的FixedUpdate)在不同论坛中出现略显频繁.它被回答过很多次了,不管如何,每次一些童鞋在得到答案后还是有一些问题. 该问题典型的答案是: update:在每一帧调用一次,而fixedUpdate:保持一个恒定的调用率. 我将会就Cocos2d-Swift(ex. Cocos2d-iPhone)中的update和fixedUpdate做一些解答,但是同样这些也适用于Unity中的Update和FixedUp