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期:阿里云海外征战记:跻身全球前三,只用了两年半