quick-cocos2d-x遊戲開發【11】——多點觸摸,quickcocos2d

來源:互聯網
上載者:User

quick-cocos2d-x遊戲開發【11】——多點觸摸,quickcocos2d

在前面已經談過單點觸摸的用法了,所以對於多點觸摸來說,也是非常簡單容易的。


多點觸摸其擁有added,removed這麼兩個專屬事件。

added  螢幕中增加了一個觸點

removed  螢幕中移除了一個觸點


另外,還有這麼一個event.points 螢幕中全部觸點資訊,

每一個觸點依然可以擷取到其,

point.x, point.y                         觸摸點的當前位置
point.prevX, point.prevY         觸摸點之前的位置
point.id                                     觸摸點 id,用於確定觸摸點的變化


結合單點觸摸的幾個事件,所以多點觸摸事件發生時,會有began,added,moved,removed,ended,canclled這些響應事件。

你可能會疑惑began和added觸發的順序,我們在使用cocos2d-x c++的時候,多點觸摸還是寫在began當中,只是觸摸點參數是一個集合,包含了全部觸點的資訊。但在quick中,將多點資訊封裝得更加方便。當第一個觸點觸摸到螢幕時,響應的是began事件,之後再有觸點在螢幕時,就會觸發added事件了,這樣一來,我們就能清楚的知道玩家什麼時候第二個手指也接觸到螢幕了。如果在c++中,就需要再寫些代碼來判斷了。


因此,removed和ended響應事件也就容易理解了觸發順序了,當有觸點離開螢幕時,只要event.points中觸點的個數大於等於2,那麼會響應removed事件,當螢幕中最後一個觸點離開時,會響應ended事件。


對於event.points中每個觸點的資訊,我們通過迴圈就可以依次擷取了。

for id, point in pairs(event.points) do    printf("%d, %f, %f", id, event.points[id].x, event.points[id].y)end


是不是很簡單,好了,咱們來個完整點的代碼,

function MyScene:ctor()        local layer = display.newLayer()    self:addChild(layer)    layer:setTouchEnabled(true)    layer:setTouchMode(cc.TOUCH_MODE_ALL_AT_ONCE)    layer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function (event)        if event.name == "began" or event.name == "added" then            for id, point in pairs(event.points) do                printf("%d, %f, %f", id, event.points[id].x, event.points[id].y)            end        elseif event.name == "removed" then            print("touch removed")        elseif event.name == "moved" then            print("touch moved")        elseif event.name == "ended" then            print("touch ended")        end        return true    end)end

不過這個測試,只有放到真機上檢驗了,quick的模擬器還只能做單點檢測。


此外,還要說明的一個就是,單點和多點觸摸的地區,一旦一個node上有多個精靈,那麼它的觸摸響應地區則是它們共同地區的大小,中紅色地區的大小。


這裡要更正一個小問題,在第二節建立情境中,newScene的參數是情境的名稱,這裡需要和建立的lua檔案名稱相同,否則雖然在模擬器中運行沒有問題,在android裝置上就會提示沒有找到這個lua檔案。

所以我們之前建立的MyScene.lua檔案,裡面的代碼需要更正下。

local MyScene = class("MyScene", function ()      return display.newScene("MyScene") --情境名稱要一致 end) 




什地方有Cocos2d-x跨平台手機遊戲開發的視頻教程下載?結合實戰項目的

推薦你看看牟東海老師的《Cocos2d-x跨平台手機遊戲開發配4個項目(引擎應用,單點和多點觸摸、瓦片地圖、骨骼動畫)》這套視頻教程不錯,教程通過4個種類各不相同的實戰項目,展示了cocos2d-x的卓越效能。並且將CocoStudio工具的使用、單點和多點觸摸、瓦片地圖、骨骼動畫、資料庫、json字串等當下遊戲開發中常見的開發手段巧妙的融入到項目之中。課程中不僅對cocos2d-x引擎的功能做了系統的系統的講解,還將單例、監聽者等常用設計模式貫穿始終。 課程大綱: 一、飛機大戰項目: 1. cocos2d-x原理及環境配置 2. cocostudio使用方法及UI控制(上) 3. cocostudio使用方法及UI控制(下) 4. XML檔案讀取與骨骼動畫 5.遊戲架構 6.遊戲戰場(上) 7.遊戲戰場(中) 8.遊戲戰場(下) 二、超級瑪麗項目: 1.瓦片地圖(上) 2.瓦片地圖(中) 3.瓦片地圖(下) 4.模板編程與單例模式 5.遊戲搖杆與多點觸摸(上) 6.遊戲搖杆與多點觸摸(中) 7.遊戲搖杆與多點觸摸(下) 8.遊戲世界之靜態物體(上) 9.遊戲世界之靜態物體(中) 10.遊戲世界之靜態物體(下) 11.遊戲世界之動態物體(上) 12.遊戲世界之動態物體(中) 13.遊戲世界之動態物體(下) 14.遊戲世界之瑪麗(上) 15.遊戲世界之瑪麗(下) 16.瑪麗頂撞物體(上) 17.瑪麗頂撞物體(下) 18.階段調試 19.遊戲世界之敵人(上) 20.遊戲世界之敵人(中) 21.遊戲世界之敵人(下) 22.遊戲世界之靜態敵人 23.遊戲世界之火球(上) 24.遊戲世界之火球(下) 25.功能擴充 三、打地鼠項目: 1.登陸介面UI 2.關於介面和選關介面UI 3.商店UI和戰場UI 4.剪下節點 5.地鼠打擊控制(上) 6.地鼠打擊控制(中) 7.地鼠打擊控制(下) 8.sqlite資料庫使用方法(上) 9.sqlite資料庫使用方法(下) 10.待用資料之鎚子(上) 11.待用資料之鎚子(下) 12.待用資料之關卡與地鼠 13.待用資料只布局與關卡地鼠資訊(上) 14.待用資料只布局與關卡地鼠資訊(下) 15.遊戲道具(上) 16.遊戲道具(下) 17.資料與遊戲流程 18.資料存檔於json格式(上) 19.資料存檔於json格式(中) 20.資料存檔於json格式(下) 四、天天愛消除項目: 1.再談觀察者模式(上) 2.再談觀察者模式(下) 3.寶石的映射關係 4.寶石的觸摸控制(上) 5.寶石的觸摸控制(下) 6.消除演算法實現

求採納
 
cocos2d-x多點觸摸編譯問題

建議在例子基礎上修改工程檔案,可以避免這些錯誤
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.