避免"Physics Space Locked"错误

在一些cocos2d中使用物理引擎的代码中,往往会出现如下错误:

Aborting due to Chipmunk error: You cannot manually reindex objects while the space is locked. Wait until the current query or step is complete.Failed condition: !space->locked

该错误是一个著名的典型问题在大多数物理引擎中出现:在碰撞事件中,你不能修改物理世界(在Chipmunk中是space)中的特定部分.在这个例子中,播放动画将会修改节点的旋转因此旋转节点的物理对象.Chipmunk并不喜欢这样做,因为物理世界(space)被锁住了!意思是当前处理的物体需要连贯的状态,只有物理引擎自身允许修改它们的状态.(而不是在SpriteBuilder中用动画修改).

幸运的是我们可以快速简单的修正这个错误…见如下代码:

-(void)didTriggerWithNode:(CCNode *)activator{
    [self scheduleBlock:^(CCTimer *timer){
        [self.animationManager runAnimationsForSequenceNamed:_timelineName];
    } delay:0.0];
}

用0延时推迟调度一个block,直到Cocos2D调度器运行所有调度blocks的下一时刻中才会运行,至少它将会延时到Cocos2D调度器的下一帧才会运行.

时间: 2024-10-03 11:01:56

避免"Physics Space Locked"错误的相关文章

vs中的aspx页面-Vs引用样式id="不提示"

问题描述 Vs引用样式id="不提示" 在vs中aspx页面引用样式后,比如 请问这怎么解决,找了好久,可是没有合适的答案,请大侠帮忙解决! 解决方案 id="不提示" 这中写法是老师教的,还是你自己想的 样式调用不要用中文,可以这样写id="nav" 然后样式中 .nav{ width:500px; heigth:500px; border:1px solid red; } 样式里面自己发挥 相关文章 ajax-关于Ajax 入门一直出错 vi

virtual-语法错误 : 缺少";"(在标识符"m_Graydlg"的前面)

问题描述 语法错误 : 缺少";"(在标识符"m_Graydlg"的前面) public:CGaryDetection m_Graydlg; 但是我已经包含了头文件啊 #pragma once #include""afxdockablepane.h""#include""GrayDetection.h"" // CGrayDetectionPane class CGrayDetectio

pom xml-maven项目中servlet.xml中出现 "oscache:config" is not bound.错误

问题描述 maven项目中servlet.xml中出现 "oscache:config" is not bound.错误 在pom.xml中加了依赖oscache的jar包.代码如下:com.opensymphonyoscache2.4.1 在servlet.xml中出现The prefix ""oscache"" for element ""oscache:config"" is not bound.错误

java运行中出现Exception in thread"main"java.lang.NoSuchMethod的错误

问题描述 我在运行"HelloWorld"例子时没有错误而在运行以下程序时就出现错误了,显示"Exceptioninthread"main"java.lang.NoSuchMethod:main"的错误程序如下:classb{inta;intb;intg;publicvoidb(){this.a=1;this.b=2;}}publicclassA{publicbobject_b[]=newb[10];intA_c=0;intA_d=0;publi

hibernate中one to one关联update报hql语法错误,cause by "join cross"错误

问题描述 HQL语句如下:updateOrderodrsetodr.state=:state,odr.sale.date=:date,odr.sale.money=:moneywhereodr.id=:id但是生成的sql语句却是这样的:Hibernate:updatedbo.tb_ordercrossjoinsetorder_state=?,date=?,money=?whereorder_id=?crossjoin后面的表名没有.配置应该没有错啊,用session.get(Order.cla

sql 2000移植到oracle后,执行cmd.Properties("output stream")=oStream 就报"实时错误 3265 在对应所需名称或序数的集合中,未找到项目"

问题描述 sql2000移植到oracle后,执行到cmd.Properties("outputstream")=oStream就报"实时错误3265在对应所需名称或序数的集合中,未找到项目",在sql2000中是正常的.清各位大侠帮忙!具体代码如下:PublicFunctionGetSQLDom(ByValsqlStrAsVariant,_OptionalByValvRootNameAsVariant,_OptionalByValvCommandTimeOutAs

mysql "too many connections" 错误 之 mysql解决方法_Mysql

解决方法是修改/etc/mysql/my.cnf,添加以下一行: set-variable = max_connections=500 或在启动命令中加上参数 max_connections=500 就是修改最大连接数,然后重启mysql.默认的连接数是100,太少了,所以容易出现如题错误. 以下是mysql.com网站的相关说明: If you get a Too many connections error when you try to connect to the mysqld serv

安装OPENCV的时候Failed to locate: "CL.exe".这个错误怎么解决

问题描述 安装OPENCV的时候Failed to locate: "CL.exe".这个错误怎么解决 安装OPENCV的时候Failed to locate: "CL.exe".这个错误怎么解决 解决方案 cl.exe是你vc编译器的命令程序 需要告诉opencv去哪里找? 解决方案二: http://blog.csdn.net/arthurfangmc/article/details/14223919

rails "No route matches" 错误的解决方法_ruby专题

有时候 rails 会出现: "No route matches"错误, 可以利用如下方法解决; 找到 config/routes.rb 文件, 打开编辑, 找到如下行: # See how all your routes lay out with "rake routes" 在这行下面添加一行, 内容如下: map.connect '',:controller=>"index",:action=>"index"