cocos2dx涓彍鍗曞搷搴斿洖璋冪殑瀹炵幇鍘熺悊-鍗氬-浜戞爾紺懼尯-闃塊噷浜?
鍓嶈█锛氳繖鍑犲ぉ鍦ㄥ仛cocos2dx涓婄殑璺ㄥ鉤鍙扮殑socket搴擄紝鐪嬫潵鐪嬪幓涔熷彧鑳界敤BSD鍘誨疄鐜頒簡銆傚洜涓鴻鎺ユ敹鏈嶅姟鍣ㄧ殑鎺ㄩ€佹秷鎭紝鎵€浠ヨ鍋氭垚寮傛澶勭悊銆備篃鍙傝€冧簡寰堝鍒漢鐨勬枃絝狅紝鏈潵鏄兂鑳芥湁涓疆瀛愮洿鎺ョ粰鎴戠敤鐨勶紝鐪嬫潵榪樻槸寰楄嚜宸遍噸澶嶉€犱笅銆傜洰鍓嶇殑鎯蟲硶鏄皝瑁呬竴涓笟鍔″眰锛屽唴閮ㄥ寘鍚竴涓猻ocket灝佽锛屼嬌鐢╬thread璧蜂竴涓嚎紼嬪幓select鎺ユ敹鏁版嵁锛屽綋鏈夋暟鎹埌杈炬椂锛岃皟鐢ㄤ笟鍔″眰鐨勫嚱鏁板鐞嗘暟鎹€備笟鍔″眰娉ㄥ唽鏈夌晫闈㈠眰鐨勫洖璋冨嚱鏁幫紝鐒跺悗棰勫鐞嗗畬姣曞悗鐩存帴涓㈢粰瀵瑰簲鐨勭晫闈㈠洖璋冨嚱鏁板鐞嗐€備絾鏄腑閫旂紪璿戜笂閬囧埌浜嗛棶棰橈紝褰撲粖澶╃湅浜嗕笅cocos2dx鍐呴儴瀵瑰簲鐨勮彍鍗曞搷搴斾簨浠舵墠鎼炴噦鍘熸潵鏄繖鏍峰紕鐨勩€?/span>
鍏跺疄榪欎釜闂鍙互綆€鍗曞緱鐪嬫垚鏄疉綾繪敞鍐屼簡B綾葷殑鍥炶皟鍑芥暟锛屽綋A綾誨璞℃帴鏀跺埌瀵瑰簲鐨勪簨浠跺悗锛岀洿鎺ヨ皟鐢˙綾葷殑鍥炶皟鍑芥暟澶勭悊銆傛湰鏉ュ洖璋冨嚱鏁板氨鏄粰C璿█鐨勮鑼冿紝鍥犱負鍒頒簡C++閲岄潰鏈夊璞″璞$殑姒傚康鍚庯紝姣忎釜鎴愬憳瀵矽薄璋冪敤鐨勬椂鍊欓兘闅愬惈浜嗕竴涓猼his鎸囬拡锛屽綋鐒訛紝A綾繪槸涓嶅叿鏈塀綾葷殑鍥炶皟鍑芥暟瀹炵幇鐨勶紝鑷劧緙栬瘧鐨勬椂鍊欏氨浼氭湁闂銆?/p>
鐪嬪埌緗戜笂涔熸湁寰堝瑙e喅鏂規硶锛屽叾涓渶鐗涙皵鐨勪竴涓氨鏄敤涓€涓猼hunk瑙e喅锛岃繖涓湁鐐歸珮絝紝鍥犱負鏄洿鎺ラ€氳繃姹囩紪浠g爜淇敼EAX瀵勫瓨鍣ㄧ殑鍊兼潵瀹炵幇榪欎釜this鎸囬拡鐨勯棶棰橈紝鎬曚笉閫氱敤锛屽叾瀹炴渶楹葷儲鐨勬槸瀵矽繖涓笉鐔熸倝锛屽埌鏃跺€欏嚭闂閮戒笉鐭ラ亾濡備綍瑙e喅锛屾兂鎯寵繕鏄綔緗€傚叾瀹炲紑濮嬬殑鏃跺€欏氨鏈変漢鎻愬埌鍙互鎶婅皟鐢ㄧ殑this鎸囬拡鏇挎崲鎴愬洖璋冨嚱鏁扮殑鐪熸鎷ユ湁鑰咃紝褰撴椂娌$悊瑙o紝鐜板湪緲葷湅浜哻ocos2dx鐨勪唬鐮佹墠鍙戠幇锛岃繖璐у氨鏄繖涔堟悶鐨勶紒褰撴椂鎴戣繕瑙夊緱寰堢濂囷紝鍘熸潵涔熸槸榪欑鍦熷姙娉曪紝鍛靛懙銆傚氨鎷緾CMenuItemImage鍋氫緥瀛愬ソ浜嗐€?/p>
鐪嬩笅CCMenuItem鐨勭被瀹氫箟锛?/p>
- class聽CC_DLL聽CCMenuItem聽:聽public聽CCNodeRGBA聽聽
- {聽聽
- protected:聽聽
- 聽聽聽聽/**聽whether聽or聽not聽the聽item聽is聽selected聽
- 聽聽聽聽聽@since聽v0.8.2聽
- 聽聽聽聽聽*/聽聽
- 聽聽聽聽bool聽m_bSelected;聽聽
- 聽聽聽聽bool聽m_bEnabled;聽聽
- 聽聽
- public:聽聽
- 聽聽聽聽CCMenuItem()聽聽
- 聽聽聽聽:聽m_bSelected(false)聽聽
- 聽聽聽聽,聽m_bEnabled(false)聽聽聽聽聽聽聽聽聽聽聽聽聽聽
- 聽聽聽聽,聽m_pListener(NULL)聽聽聽聽聽聽聽聽聽聽聽聽聽聽
- 聽聽聽聽,聽m_pfnSelector(NULL)聽聽
- 聽聽聽聽,聽m_nScriptTapHandler(0)聽聽
- 聽聽聽聽{}聽聽
- 聽聽聽聽virtual聽~CCMenuItem();聽聽
- 聽聽
- 聽聽聽聽/**聽Creates聽a聽CCMenuItem聽with聽no聽target/selector聽*/聽聽
- 聽聽聽聽static聽CCMenuItem*聽create();聽聽
- 聽聽聽聽/**聽Creates聽a聽CCMenuItem聽with聽a聽target/selector聽*/聽聽
- 聽聽聽聽static聽CCMenuItem*聽create(CCObject聽*rec,聽SEL_MenuHandler聽selector);聽聽
- 聽聽聽聽/**聽Initializes聽a聽CCMenuItem聽with聽a聽target/selector聽*/聽聽
- 聽聽聽聽bool聽initWithTarget(CCObject聽*rec,聽SEL_MenuHandler聽selector);聽聽
- 聽聽聽聽/**聽Returns聽the聽outside聽box聽*/聽聽
- 聽聽聽聽CCRect聽rect();聽聽
- 聽聽聽聽/**聽Activate聽the聽item聽*/聽聽
- 聽聽聽聽virtual聽void聽activate();聽聽
- 聽聽聽聽/**聽The聽item聽was聽selected聽(not聽activated),聽similar聽to聽"mouse-over"聽*/聽聽
- 聽聽聽聽virtual聽void聽selected();聽聽
- 聽聽聽聽/**聽The聽item聽was聽unselected聽*/聽聽
- 聽聽聽聽virtual聽void聽unselected();聽聽
- 聽聽聽聽聽聽
- 聽聽聽聽/**聽Register聽menu聽handler聽script聽function聽*/聽聽
- 聽聽聽聽virtual聽void聽registerScriptTapHandler(int聽nHandler);聽聽
- 聽聽聽聽virtual聽void聽unregisterScriptTapHandler(void);聽聽
- 聽聽聽聽int聽getScriptTapHandler()聽{聽return聽m_nScriptTapHandler;聽};聽聽
- 聽聽
- 聽聽聽聽virtual聽bool聽isEnabled();聽聽
- 聽聽聽聽//@note:聽It's聽'setIsEnable'聽in聽cocos2d-iphone.聽聽聽
- 聽聽聽聽virtual聽void聽setEnabled(bool聽value);聽聽
- 聽聽聽聽virtual聽bool聽isSelected();聽聽
- 聽聽聽聽聽聽
- 聽聽聽聽virtual聽void聽setOpacityModifyRGB(bool聽bValue)聽{CC_UNUSED_PARAM(bValue);}聽聽
- 聽聽聽聽virtual聽bool聽isOpacityModifyRGB(void)聽{聽return聽false;}聽聽
- 聽聽聽聽聽聽
- 聽聽聽聽/**聽set聽the聽target/selector聽of聽the聽menu聽item*/聽聽
- 聽聽聽聽void聽setTarget(CCObject聽*rec,聽SEL_MenuHandler聽selector);聽聽
- 聽聽
- protected:聽聽
- 聽聽聽聽CCObject*聽聽聽聽聽聽聽m_pListener;聽聽聽聽聽聽//聽鍥炶皟鍑芥暟鎷ユ湁鑰?/span>聽聽
- 聽聽聽聽SEL_MenuHandler聽聽聽聽m_pfnSelector;聽//聽鍥炶皟鍑芥暟聽聽
- 聽聽聽聽int聽聽聽聽聽聽聽聽聽聽聽聽聽m_nScriptTapHandler;聽聽
- };聽聽
鍏朵腑鏈変袱涓緢鍏抽敭鐨勬垚鍛樺彉閲忥紝CCObject* m_pListener 鍜?SEL_MenuHandler m_pfnSelector銆傛潵鐪嬩笅SEL_MenuHandler鐨勫畾涔夛細
- typedef聽void聽(CCObject::*SEL_MenuHandler)(CCObject*);聽聽
- 聽聽
- #define聽menu_selector(_SELECTOR)聽(SEL_MenuHandler)(&_SELECTOR)聽聽
鏄殑锛岃繖涓氨鏄洖璋冨嚱鏁扮殑綾誨瀷锛岀劧鍚庝笅闈㈢殑瀹忓畾涔夋槸涓轟簡鏂逛究鍨掍唬鐮佺敤鐨勩€?/p>
鍐嶆潵鐪嬬湅娉ㄥ唽鐨勪唬鐮侊細
- CCMenuItemImage聽*聽CCMenuItemImage::create(const聽char聽*normalImage,聽const聽char聽*selectedImage)聽聽
- {聽聽
- 聽聽聽聽return聽CCMenuItemImage::create(normalImage,聽selectedImage,聽NULL,聽NULL,聽NULL);聽聽
- }聽聽
- 聽聽
- CCMenuItemImage聽*聽CCMenuItemImage::create(const聽char聽*normalImage,聽const聽char聽*selectedImage,聽CCObject*聽target,聽SEL_MenuHandler聽selector)聽聽
- {聽聽
- 聽聽聽聽return聽CCMenuItemImage::create(normalImage,聽selectedImage,聽NULL,聽target,聽selector);聽聽
- }聽聽
- 聽聽
- CCMenuItemImage聽*聽CCMenuItemImage::create(const聽char聽*normalImage,聽const聽char聽*selectedImage,聽const聽char聽*disabledImage,聽CCObject*聽target,聽SEL_MenuHandler聽selector)聽聽
- {聽聽
- 聽聽聽聽CCMenuItemImage聽*pRet聽=聽new聽CCMenuItemImage();聽聽
- 聽聽聽聽if聽(pRet聽&&聽pRet->initWithNormalImage(normalImage,聽selectedImage,聽disabledImage,聽target,聽selector))聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽pRet->autorelease();聽聽
- 聽聽聽聽聽聽聽聽return聽pRet;聽聽
- 聽聽聽聽}聽聽
- 聽聽聽聽CC_SAFE_DELETE(pRet);聽聽
- 聽聽聽聽return聽NULL;聽聽
- }聽聽
- 聽聽
- bool聽CCMenuItemImage::initWithNormalImage(const聽char聽*normalImage,聽const聽char聽*selectedImage,聽const聽char聽*disabledImage,聽CCObject*聽target,聽SEL_MenuHandler聽selector)聽聽
- {聽聽
- 聽聽聽聽CCNode聽*normalSprite聽=聽NULL;聽聽
- 聽聽聽聽CCNode聽*selectedSprite聽=聽NULL;聽聽
- 聽聽聽聽CCNode聽*disabledSprite聽=聽NULL;聽聽
- 聽聽
- 聽聽聽聽if聽(normalImage)聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽normalSprite聽=聽CCSprite::create(normalImage);聽聽
- 聽聽聽聽}聽聽
- 聽聽
- 聽聽聽聽if聽(selectedImage)聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽selectedSprite聽=聽CCSprite::create(selectedImage);聽聽
- 聽聽聽聽}聽聽
- 聽聽聽聽聽聽
- 聽聽聽聽if(disabledImage)聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽disabledSprite聽=聽CCSprite::create(disabledImage);聽聽
- 聽聽聽聽}聽聽
- 聽聽聽聽return聽initWithNormalSprite(normalSprite,聽selectedSprite,聽disabledSprite,聽target,聽selector);聽聽
- }聽聽
鏈€鍚庡弽姝e氨鏄皟鐢ㄤ笅闈㈢殑涓€涓疄鐜板洖璋冨嚱鏁版敞鍐屻€?/p>
- //聽鍚庢湡娉ㄥ唽聽聽
- void聽CCMenuItem::setTarget(CCObject聽*rec,聽SEL_MenuHandler聽selector)聽聽
- {聽聽
- 聽聽聽聽m_pListener聽=聽rec;聽聽
- 聽聽聽聽m_pfnSelector聽=聽selector;聽聽
- }聽聽
- 聽聽
- //聽鍒濇湡緇戝畾聽聽
- CCMenuItem*聽CCMenuItem::create(CCObject聽*rec,聽SEL_MenuHandler聽selector)聽聽
- {聽聽
- 聽聽聽聽CCMenuItem聽*pRet聽=聽new聽CCMenuItem();聽聽
- 聽聽聽聽pRet->initWithTarget(rec,聽selector);聽聽
- 聽聽聽聽pRet->autorelease();聽聽
- 聽聽聽聽return聽pRet;聽聽
- }聽聽
- 聽聽
- bool聽CCMenuItem::initWithTarget(CCObject聽*rec,聽SEL_MenuHandler聽selector)聽聽
- {聽聽
- 聽聽聽聽setAnchorPoint(ccp(0.5f,聽0.5f));聽聽
- 聽聽聽聽m_pListener聽=聽rec;聽聽
- 聽聽聽聽m_pfnSelector聽=聽selector;聽聽
- 聽聽聽聽m_bEnabled聽=聽true;聽聽
- 聽聽聽聽m_bSelected聽=聽false;聽聽
- 聽聽聽聽return聽true;聽聽
- }聽聽
- void聽CCMenuItem::activate()聽聽
- {聽聽
- 聽聽聽聽if聽(m_bEnabled)聽聽
- 聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽if聽(m_pListener聽&&聽m_pfnSelector)聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽(m_pListener->*m_pfnSelector)(this);聽聽聽聽//聽鐩存帴璋冪敤浜嗕究鏄?/span>聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽聽聽聽聽聽聽
- 聽聽聽聽聽聽聽聽if聽(kScriptTypeNone聽!=聽m_eScriptType)聽聽
- 聽聽聽聽聽聽聽聽{聽聽
- 聽聽聽聽聽聽聽聽聽聽聽聽CCScriptEngineManager::sharedManager()->getScriptEngine()->executeMenuItemEvent(this);聽聽
- 聽聽聽聽聽聽聽聽}聽聽
- 聽聽聽聽}聽聽
- }聽聽
(m_pListener->*m_pfnSelector)(this); 榪欏彞鍙兘瑕佺◢寰В閲婁笅锛屽叾瀹炰篃鎸哄ソ鎳傜殑銆傞鍏堝墠闈㈣繖涓嫭鍙峰氨鏄搴旂殑鍑芥暟锛屽悗闈㈢殑this灝辨槸鍙傛暟锛岃繖涓弧瓚衝鍑芥暟鎸囬拡鐨勫畾涔夛紝鍗硋oid (CCObject::*)(CCObject*); 鍥犱負CCMenuItem鍩虹被鏄疌CObject锛岄偅鍏跺疄璋冪敤鐨勫満鏅?CScene)鍩虹被涔熶竴鏍楓€傜劧鍚庡氨鏄痬_pListener->*m_pfnSelector榪欎釜浜嗭紝鍓嶉潰鐨凩istener搴旇娌″暐鐤戣锛屽叧閿槸*m_pfnSelector鍙兘鏈変簺浜轟細鎳碉紝鍏跺疄涔熷緢綆€鍗曪紝m_pfnSelector鏄嚱鏁版寚閽堬紝棣栧厛浠栨槸涓寚閽堬紝瀛樼殑鏄釜鍦板潃锛岀劧鍚?鑷劧鏄彇瀵瑰簲鍦板潃鍐呯殑鍐呭锛堝嚱鏁板湴鍧€锛夛紝瀵逛簬鍑芥暟璋冪敤鏉ヨ锛屽叾瀹炲氨鏄皟鐢ㄤ竴涓湴鍧€锛岃€宮_pListener->m_pfnSelector鏄庢樉鏄敊璿殑锛屽洜涓鴻皟鐢ㄨ€呮病鏈塵_pfnSelector榪欎釜鎴愬憳鍙橀噺锛屼粬鍙湁瀵瑰簲榪欎釜鎸囬拡鍐呴儴瀛樺偍鐨勫嚱鏁板湴鍧€瀵瑰叾鏄湁鏁堢殑銆?/p>
欏轟究鎶婅皟鐢╝ctive鐨勪唬鐮佷篃鏀句竴涓嬫洿娓呮锛?/span>
最後更新:2017-04-03 12:56:18
上一篇:
Memcache Key 設計技巧及注意事項
下一篇:
ViewController deallocted 而造成崩潰的問題
"粗暴"讓馬雲栽了個大跟頭
ZED Board從入門到精通(一):ZYNQ結構簡介
《Spring MVC學習指南(第2版)》——第1章 Spring框架 1.1XML配置文件
C# WinForm多線程開發(二) ThreadPool 與 Timer
人造物,淘寶造節,造物節造江湖
JAVA 十六進製與字符串的轉換
android 簡單列表對話框(AlertDialog.Builder().setItems())
他的前半生是廚神,45歲卻決定加入阿裏巴巴
GDS全球域名峰會將於2017年7月7日廈門開啟
【雲周刊】第144期:阿裏雲海外征戰記:躋身全球前三,隻用了兩年半