今天用CCSpriteFrame载入一张包含多个动画帧的图片时候,出现了一些问题,代码如下
CCSpriteFrame* frame0 = CCSpriteFrame::createWithTexture( texture, CCRectMake( 0, 0 * MOVE_TILE_SIZE, MOVE_TILE_SIZE, MOVE_TILE_SIZE ));
CCSpriteFrame* frame1 = CCSpriteFrame::createWithTexture( texture, CCRectMake( 0, 1 * MOVE_TILE_SIZE, MOVE_TILE_SIZE, MOVE_TILE_SIZE ));
animFrames->addObject( frame0 );
animFrames->addObject( frame1 );
m_AnimMoveDown = CCAnimation::create(animFrames, 0.2f);
这里texture是包含动画的一个Texture2D对象,在最后一步creater的时候报错了,跟踪到CCAnimation.cpp里发现,原来直接用create方法,会进入
initWithAnimationFrames方法,里面会检查传入的CCArray是否是CCAnimationFrame*类型
CCARRAY_VERIFY_TYPE(arrayOfAnimationFrames, CCAnimationFrame*);
而我上面用的是CCSpriteFrame类型
正确的方法是使用
m_AnimMoveDown = CCAnimation::createWithSpriteFrames(animFrames, 0.2f);
PS:个人看了下CCAnimationFrame这个类型,发现里面方法很少,不知道是用在哪些地方,望知道的朋友指点