cocos2d-x事件觸發的優先順序
[i][b]本文為firedragonpzy原創,轉載務必在明顯處註明:
轉載自【Softeware MyZone】原文連結: http://www.firedragonpzy.com.cn/index.php/archives/858[/b][/i]
詳細請參考: 【Software MyZne】[url]http://www.firedragonpzy.com.cn/index.php/archives/858 [/url]
轉載自【Softeware MyZone】原文連結: http://www.firedragonpzy.com.cn/index.php/archives/858[/b][/i]
剛剛開始學習coocs2d-x的時候,被這個事件的優先順序整的可是夠嗆啊。關於事件,有CCStandradTouch,CCTargetedTouch。CCTouchDispatcher類分發S獲取的觸控事件。它有兩種分發方式,一種是CCStandardTouchDelegate,一種是CCTargetedTouchDelegate。和前面的事件一一對應,前者將所有的Touch資訊直接傳遞給實現該協議的物件,而後者則要求實現該代理的類一次只能處理一個事件,並且吃掉該事件,不再傳播,當然也可以設定傳播。
關於CCStandardTouchDelegate,它可以處理多觸點事件,而CCTargetedTouchDelegate也就是相應的單點事件嘍。
使用單點事件,基本都會用到下面的程式碼:
void DialogLayer::onEnter()
{
CCLayerColor::onEnter();
CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,0,true);
}
void DialogLayer::onExit()
{
CCLayerColor::onExit();
CCTouchDispatcher::sharedDispatcher()->removeDelegate(this);
}
最主要的就是CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,0,true);中的第三個引數,若為true,則表明吞掉事件,若為false,不吞掉事件,個人感覺和目標事件是一樣的,只不過是單點,而不是多點而已。寫完這個,相應的肯定會使用到下面的程式碼:
bool DialogLayer::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
return true;
}
void DialogLayer::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent)
{
}
void DialogLayer::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{
}
ccTouchBegan中的return true,表明擁有物件處理權,這個返回值是和CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,0,true);的第三個引數息息相關的若為true,ccTouchBegan也為true,會吞掉事件,走接下來的move等。若ccTouchBegan為false,則不會吞掉事件,各個層被分發點選事件,但是不走move等方法。
不對啊 ,扯遠了,本來是說優先順序的。先說優先順序:
拿精靈來舉例子吧。精靈觸控事件的觸發是根據新增的順序依次觸發的,後新增的精靈先捕獲觸控事件,當然,這是沒有設定事件優先順序的情況下,若要是定義了事件的優先順序,則先按照事件的優先順序依次被觸發,然後根據新增的順序依次被觸發,特別注意在使用CCMenu的時候,容易出現錯誤,之前我就是怎麼點選也不觸發事件,糾結了好久,希望看了本文的朋友們,不會出現此低階錯了
亂啊 ,工作了一天在寫,腦子有點鈍了,見諒,呼呼……
詳細請參考: 【Software MyZne】[url]http://www.firedragonpzy.com.cn/index.php/archives/858 [/url]
相關文章
- 【PB】事件的觸發時機及先後順序事件
- 併發請求的優先順序
- CSS優先順序CSS
- 中斷優先順序
- python運算子及優先順序順序Python
- [譯]HTTP/2的優先順序HTTP
- CSS的處理優先順序CSS
- Android程式優先順序Android
- SQL 優先順序join>whereSQL
- java運算子優先順序Java
- nginx快取優先順序Nginx快取
- php運算子優先順序PHP
- css優先順序彙總CSS
- css選擇器的優先順序CSS
- 談Nginx的Location匹配優先順序Nginx
- 警惕執行緒的優先順序執行緒
- CSS 選擇器的優先順序CSS
- 聊一下Button事件、命令、行為的觸發順序事件
- java setPriority()設定優先順序Java
- 封裝優先順序佇列封裝佇列
- Yarn任務優先順序配置Yarn
- gitignore優先順序小結Git
- css 選擇器優先順序CSS
- java執行緒優先順序Java執行緒
- 資料型別優先順序資料型別
- 深入理解css優先順序CSS
- NLS引數優先順序解析
- 華為路由協議優先順序路由協議
- C++運算子優先順序C++
- SpringBoot配置檔案優先順序載入順序Spring Boot
- nginx的location匹配順序、優先順序,location對映衝突排查Nginx
- Java之執行緒的優先順序Java執行緒
- HttpClient和HttpGet 引數的優先順序HTTPclient
- Nginx location 在配置中的優先順序Nginx
- C++操作符的優先順序C++
- 【分享】如何評估 bug 的優先順序
- Michael Stonebraker列出了PostgreSQL未來發展的優先順序SQL
- 何為CSS 樣式優先順序CSS