请教执行动画时出现的bug

  • 本帖最后由 心愿 于 2013-4-26 23:20 编辑 *

想请教个问题
代码如下:



void TestLayer::onEnter()
{
    CCLayer::onEnter();
    CCLog("TestLayer#onEnter");
    CCSize winSize = CCEGLView::sharedOpenGLView()->getVisibleSize();
    
    CCSprite *pSprite = CCSprite::create("HelloWorld.png");
    
    pSprite->setPosition(ccp(winSize.width / 2, winSize.height / 2));
    
    CCActionInterval *pFadeIn = CCFadeIn::create(2);
    
    CCActionInterval *pFadeOut = pFadeIn->reverse();
    
    CCSequence *pSequence = CCSequence::create(pFadeIn, pFadeOut, NULL);
    
    CCAction *pAction = CCRepeatForever::create(pSequence);
    
    pSprite->runAction(pAction);
    
    addChild(pSprite);
}

上面的代码是创建了一个淡入淡出得效果
预想得正常情况应该是 进入场景–> 淡入–> 淡出
现在出现得情况是 进入场景–> 闪一下完整得图片(透明度100%) --> 消失–> 淡入 --> 淡出
在代码执行得时候为什么 没有立即执行动画 而是先显示一下这张图…突然消失…
然后在执行淡入淡出的动画

在ios模拟器上测试会出现这样的情况…
而在win32上没有发现这样得情况…
麻烦各位大侠指点下迷津…
谢谢啦…

CCSprite *pSprite = CCSprite::create("HelloWorld.png");

pSprite->setPosition(ccp(winSize.width / 2, winSize.height / 2));

加一句pSprite->setOpacity(0);看看,应该是因为不同平台上处理pFadeIn 的时间线不同造成的

先add再run

CCSprite *pSprite = CCSprite::create("HelloWorld.png");

pSprite->setPosition(ccp(winSize.width / 2, winSize.height / 2));

加一句pSprite->setOpacity(0);看看,应该是因为不同平台上处理pFadeIn 的时间线不同造成的