cocos2d-x touches事件中使用 addTargetedDelegate 的潛在bug
跟蹤進入addTargetedDelegate 的代碼,會發現,如果touchDispacher當前被鎖定了,那么新加的touch delegate會被添加進一個緩沖數組里 m_pHandlesToAdd, 并沒有被真正注冊, 如果之后使用 findHandler 是找不到這個對象的。而讓touchDispacher被鎖定的(m_bLocked=true)唯一方式是調用了touches方法。
因此,謹記以下原則:
不要在一個對象的touch事件里注冊新的touch delegate。
比如說,有一個按鈕,在它的點擊事件里,新創建一個layer,這個layer里注冊新的按鈕,就有可能會出錯。
解決方案是,把創建這件事schedule出去,而不是直接調用。
浙公網安備 33010602011771號