新事件分發(fā)機制:
在2.x 版本事件處理時,將要觸發(fā)的事件交給委托代理(delegate)處理,再通過實現(xiàn)代理里面的onTouchBegan等方法接收事件,最后完成事件的響應(yīng)。而在新的事件分發(fā)機制中,只需通過創(chuàng)建一個事件監(jiān)聽器-用來實現(xiàn)各種觸發(fā)后的邏輯,然后添加到事件分發(fā)器_eventDispatcher
,所有事件監(jiān)聽器有這個分發(fā)器統(tǒng)一管理,即可完成事件響應(yīng)。
事件監(jiān)聽器有以下幾種:
觸摸事件 (EventListenerTouch)
鍵盤響應(yīng)事件 (EventListenerKeyboard)
鼠標(biāo)響應(yīng)事件 (EventListenerMouse)
自定義事件 (EventListenerCustom)
加速記錄事件 (EventListenerAcceleration)
_eventDispatcher
的工作由三部分組成:
事件分發(fā)器 EventDispatcher
事件類型 EventTouch, EventKeyboard 等
事件監(jiān)聽器 EventListenerTouch, EventListenerKeyboard 等
監(jiān)聽器實現(xiàn)了各種觸發(fā)后的邏輯,在適當(dāng)時候由事件分發(fā)器分發(fā)事件類型,然后調(diào)用相應(yīng)類型的監(jiān)聽器。
這里我們主要來了解Cocos2d3.x版本下的觸摸事件中的多點觸摸擴大縮放如何實現(xiàn)
[cpp] view plaincopy
void NewScene::onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event) { CCLOG("began"); }
void HelloWorld::onTouchesMoved(const std::vector<Touch *> &touches, cocos2d::Event *event)
{
//多點
if(touches.size() > 1)
{
auto distance1 = touches[0]->getPreviousLocation().distance(touches[1]->getPreviousLocation());
auto distance2 = touches[0]->getLocation().distance(touches[1]->getLocation());
float scale = sprite->getScale() * ( distance2 / distance1);
scale = MIN(2,MAX(0.5, scale));
sprite->setScale(scale);
}
else
{
log("單點");
}
}
void NewScene::onTouchesEnded(const std::vector<Touch*>& touches, Event *unused_event) { CCLOG("End"); }
OK.于Cocos2d的多點觸摸的學(xué)習(xí)就分享到此,有講得不對的地方還望指出進行探討互相學(xué)習(xí)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站欄目:【Cocos2d開發(fā)】淺析Cocoss2d下的多點觸控-創(chuàng)新互聯(lián)
當(dāng)前URL:http://aaarwkj.com/article26/ccdsjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、App設(shè)計、企業(yè)網(wǎng)站制作、全網(wǎng)營銷推廣、網(wǎng)站排名、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容