通过CCAnimation实例获取CCSpriteFrame,会出现类型转换问题。
我们在创建一个animation的时候,经常遵循下面的步骤:
1)create 一个CCArray对象A。
2)通过A->addObject()添加CCSpriteFrame对象
3)通过CCAnimation::createWithSpriteFrames(A, 0.2f)常见一个CCAnimation对象B。
可以通过B->getFrames()获得一个CCArray*的指针A’,然后通过A’->ObjectAtIndex(0)获得第一个CCObject*类型的对象,称之为C。从表面上看,A’和A应该是同一个数组,所以C应该可以通过强制类型转换dynamic_cast<CCSPRITEFRAME*>转换为CCSpriteFrame*类型。但是实际上如果这么写,那么程序就会出错,如果用VS,它会自动转到CCObject::retain()函数的CCAssert语句。

正确的解决方法为

CCAnimationFrame* pAnimationFrame =dynamic_cast<CCAnimationFrame*>(B->getFrames()->ObjectAtIndex(0));
CCSpriteFrame* pSpriteFrame = pAnimationFrame->getSpriteFrame();

转自:http://xiandanboke.com.cn/cocos2d-x-2-0ccanimation.html

cocos2d-x 2.0通过CCAnimation实例获取CCSpriteFrame的更多相关文章

  1. Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度-*

    ylbtech-Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度 1.返回顶部 Java 实例 - 获取数组长度  Java 实例 本文我们将为大家介绍如何使用数 ...

  2. 每天一个JavaScript实例-获取元素当前高度

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  3. Oracle 11.2.0.4单实例打PSU,OJVM PSU补丁快速参考

    写在前面: 1.Oracel打每个补丁的操作有时存在差异,所以不管多熟悉,都应该在打任何补丁之前阅读新补丁中附带的readme. 2.Oracle每季度都会更新一个最新的PSU,本文最新指的是当前最新 ...

  4. selenium2.0处理case实例(二)

    本文通过具体代码处理过程, 来展示selenium中一些比较不常用的类的用法 1.javascriptExcutor,通过将driver强转成JavascriptExecutor类型, 调用execu ...

  5. 高屋建瓴 cocos2d-x-3.0架构设计 Cocos2d (v.3.0) rendering pipeline roadmap(原文)

    Cocos2d (v.3.0) rendering pipeline roadmap Why (the vision) The way currently Cocos2d does rendering ...

  6. Android 4.0以后正确的获取外部sd卡存储目录

    刚解决这个棘手的问题 找了很久,随笔记下. 网上搜索 android 获取外部sd卡存储目录 普遍都是: 1) Environment.getExternalStorageDirectory() 这个 ...

  7. redis5.0.3单实例简单安装记录

    redis5.0.3单实例简单安装记录 日常需要测试使用,索性记录下来,免得临时又麻烦的找资料. yum -y install make gcc-c++ cmake bison-devel ncurs ...

  8. Asianux 7.3安装Oracle 11.2.0.4单实例体验

    环境:Asianux 7.3 需求:安装Oracle 11.2.0.4 单实例 背景:系统使用默认的最小安装部署,Oracle安装额外需要的包统一使用yum安装. 查看当前系统相关信息: [root@ ...

  9. Windows Server 2008 安装 10.2.0.5 单实例

    需求:Windows Server 2008 安装 10.2.0.5 单实例 原以为非常简单的一次任务,实际却遇到了问题,故记录一下. 1.安装10.2.0.1 2.安装10.2.0.4 3.安装10 ...

随机推荐

  1. 用百度SDK获取地理位置和天气信息

    以下实现通过百度SDK获取地理位置和天气信息,请參考title=android-locsdk/guide/v5-0">百度开发文档 1. 在相关下载最新的库文件.将so文件的压缩文件解 ...

  2. Out of memory: Kill process 内存不足

    服务直接被 killed,感觉特别奇怪.代码肯定是没有问题的,但为什么放到服务器上就出错了呢. 部署时报错如下: Failed to add the deployment content to the ...

  3. Java 模拟新浪登录 2016

    想学习一下网络爬虫.涉及到模拟登录,查阅了一番资料以后发现大部分都有点过时了,就使用前辈们给的经验,Firefox抓包调试,採用httpclient模拟了一下新浪登录. 不正确之处多多包括.须要的能够 ...

  4. MIME简介

    MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器 ...

  5. linux 的空命令:(冒号)

    php里面又“空操作”这个东西,于是想一想linux的命令中是否有“空命令”这种东西,搜索一下,结果发现真的有这个东西存在 -------:) 冒号 : 就是空命令.即什么也不做,是一个命令占位符 # ...

  6. [AngularJS] Angular 1.3 new $q constructor

    <!DOCTYPE html> <html ng-app="app"> <head lang="en"> <meta ...

  7. js实现可拉伸移动的div

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd&qu ...

  8. xcode的svn和git使用方法

    1.创建版本库:(参考:http://blog.csdn.net/itianyi/article/details/8601183) 方法:直接在windows服务器安装VisualSVN Server ...

  9. iOS核心动画 - CALayer

    大家知道,在iOS中所有的视图都继承自UIView. UIView处理所有的触摸事件和画图. 事实上,UIView所有的渲染和动画是托管给另一个类来负责的,它就是CALayer. 但是,需要记住的是, ...

  10. 黑马程序员:多线程Socket

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ----------------------- 一.Socket一般应用模式(服 ...