您好,登錄后才能下訂單哦!
可能是“頭暈”了,我在編碼中隨意寫出了如下代碼:
CCLabelTTF* lbl=CCLabelTTF::create("Hi, you have succeeded in buying this Power-up!", "Arial", 32); lbl->setColor(ccc3(255,0,0)); lbl->setPosition(VisibleRect::center()); ul2->addChild(lbl,99); CCActionInterval* scaleto = CCScaleTo::create(2.0f, 2.5f); CCActionInterval* fadeout = CCFadeOut::create(2.0f); CCLog("********************************"); CCAction* s = CCSequence::create( CCDelayTime::create(1), scaleto, fadeout, CCRemoveSelf::create(), CCCallFunc::create(this, callfunc_selector(StoreScene::callbackForBuyOK)), NULL); lbl->runAction(s); //... void StoreScene::callbackForBuyOK( CCObject* pSender ) { UIButton* btnBuy = dynamic_cast<UIButton*>(ul2->getWidgetByName("Button_Buy")); btnBuy->setEnabled(false); }
我的想法很簡單,可能你也猜測出了,就是當(dāng)玩家購買某道具結(jié)束后,出現(xiàn)一個動態(tài)文字提示。而且,借助于CCRemoveSelf實(shí)現(xiàn)添加到場景中文本標(biāo)簽的自動移除。并且,在移除結(jié)束后,執(zhí)行一個簡短代碼。
但是,實(shí)際運(yùn)行上述代碼時出現(xiàn)如下運(yùn)行時錯誤:
相信,上述錯誤你有所了解。搜索了一下網(wǎng)絡(luò),有朋友在
http://azykise.blog.163.com/blog/static/1730802442011616103252723/
處給出如下解釋:
這可能是函數(shù)調(diào)用約定不一致或者參數(shù)傳遞出錯。 函數(shù)調(diào)用約定主要約束了兩件事: 1.參數(shù)傳遞順序 2.調(diào)用堆棧由誰(調(diào)用函數(shù)或被調(diào)用函數(shù))清理 常見的函數(shù)調(diào)用約定:stdcall cdecl fastcall thiscall naked call __stdcall表示 1.參數(shù)從右向左壓入堆棧 2.函數(shù)被調(diào)用者修改堆棧 3.函數(shù)名自動加前導(dǎo)的下劃線,后面緊跟一個@符號,其后緊跟著參數(shù)的尺寸 用depends就可以看到函數(shù)的導(dǎo)出名。 |
而我的代碼運(yùn)行時錯誤停留在了如下位置:
總之吧,根據(jù)上述錯誤,可以大致判斷出,錯誤在函數(shù)調(diào)用格式出了問題。結(jié)合上述圖片位置和前面的代碼,我大致判斷出了如本文題目所示的結(jié)論,即CCRemoveSelf與CCCallFunc系列函數(shù)不能一起使用!
其實(shí),進(jìn)一步想來,上述兩種Action也沒有必要一起使用。于是,前面的代碼可以修改為如下即可解決問題:
CCAction* s = CCSequence::create( CCDelayTime::create(1), scaleto, fadeout, CCRemoveSelf::create(), NULL); lbl->runAction(s); UIButton* btnBuy = dynamic_cast<UIButton*>(ul2->getWidgetByName("Button_Buy")); btnBuy->setEnabled(false);
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。