簡體   English   中英

帶參數的CCCallback的Cocos2d-x問題

[英]Cocos2d-x problems with CCCallback with arguments

我正在嘗試使用CCSequence為Sprite制作動畫,我需要將參數傳遞給回調,但是當我這樣做時,我得到了

信號11(SIGSEGV),代碼1(SEGV_MAPERR),故障加法器00000021

這是我的代碼:

void Board::createExplotion(CCPoint boardPosition){
    Mineral* mineralToAnimate = this->boardPieces[(unsigned char) boardPosition.y][(unsigned char) boardPosition.x];
    CCArray* params = CCArray::create(mineralToAnimate, NULL);

    params->retain();

    CCSequence* s1 = CCSequence::create(
                        CCScaleTo::create(0.5f, SELECTED_SCALE),
                        CCScaleTo::create(0.25f, SELECTED_SCALE + 0.1),
                        CCCallFuncO::create(this, callfuncO_selector(Board::test), params )
                        //CCCallFunc::create(this, callfunc_selector(Board::test))
                    );

        mineralToAnimate->runAction(s1);
    }

void Board::test(CCNode* sender, CCObject* data){ ... }

我嘗試了不帶參數的相同代碼,並且可以正常工作。

我正在使用eclipse,調試器沒有太大幫助,或者至少我不知道如何,而adb logcat顯示了這一點:

建立指紋:

'samsung / espressowifixx / espressowifi:4.1.1 / JRO03C / P3110XXCLK7:user / release-keys'pid:4931,tid:4946,name:Thread-32873 >>> org.cocos2dx.hellocpp <<<信號11(SIGSEGV) ,代碼1(SEGV_MAPERR),故障附加器00000021堆棧幀#00 pc 00099ed2 /data/data/org.cocos2dx.hellocpp/lib/libhellocpp.so(cocos2d :: CCSequence :: initWithTwoActions(cocos2d :: CCFiniteTimeAction *,cocos2d ::: CCFiniteTimeAction *)+ 93)堆棧幀#01 pc 00099fc9 /data/data/org.cocos2dx.hellocpp/lib/libhellocpp.so(cocos2d :: CCSequence :: createWithTwoActions(cocos2d :: CCFiniteTimeAction *,cocos2d :: CCFiniteTimeAction *)+ 44)堆棧幀#02 pc 0009a059 /data/data/org.cocos2dx.hellocpp/lib/libhellocpp.so(cocos2d :: CCSequence :: createWithVariableList(cocos2d :: CCFiniteTimeAction *,std :: __ va_list)+22)堆棧幀# 03 pc 0009a083 /data/data/org.cocos2dx.hellocpp/lib/libhellocpp.so(cocos2d :: CCSequence :: create(cocos2d :: CCFiniteTimeAction *,...)+ 10)堆棧框架#04 pc 0008ea5d / data /數據/ org.cocos2dx.hellocpp / lib / libhellocpp.so(董事會:: cr eateExplotion(cocos2d的:: CCPoint)+100)

謝謝。

如果要通過操作回調發送數據,則必須使用“節點和數據”選擇器而不是“對象”選擇器。 因此更改行:

CCCallFuncO::create(this, callfuncO_selector(Board::test), params )

CCCallFuncND::create(this, callfuncND_selector(Board::test), params )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM