CocosCreatorでタッチを透過させる (swallowTouchesをfalseにする) 方法
CocosCreatorでタッチを透過させる (swallowTouchesをfalseにする) 方法:
どうにもならないので、昔公開されていた非公開のApiを使用して設定しました
TypeScriptで書いてるので必要に応じてJSに戻すなどしてください
非公開なので、
公式も明確に
- http://docs.cocos2d-x.org/creator/api/en/classes/Node.html#on
-
いつ使えなくなるかはわかりませんが現状の対応ということで
CocosCreatorの(タッチ)イベント登録について
- 現行の最新 (v2.0.2) の話
-
公式にはnode.on
での設定が推奨されている模様
-
しかしnode.on
によるタッチイベント登録は、内部実装でswallowTouches:true
となっており「イベントを発火した上で背部のNodeへさらにタッチを通す」ことができない
-
cocosの forum にログインして聞こうとしたものの、ログイン時にエラーになり聞くことができない
- https://discuss.cocos2d-x.org/
- (ユーザー登録がhttpなのも気になる)
-
engineのIssueもあんまり見てないっぽい
非公開Apiを用いて設定する
どうにもならないので、昔公開されていた非公開のApiを使用して設定しましたTypeScriptで書いてるので必要に応じてJSに戻すなどしてください
const listener1 = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY_ONE, swallowTouches: false, onTouchBegan: (touch: cc.Touch, event) => { // Node内をtapしていているかでtrue/false切り替えても良い return true; }, onTouchEnded: (touch, event) => { // 発火した上で透過させたい処理 } }); cc.eventManager.addListener(listener1, this.touchNode);
EventListener
や eventManager
部分が赤くなったり下記警告が出力されます。Simulator: JS: [WARN]: The 'cc.eventManager' will be removed in v2.0, please use 'cc.EventTarget or cc.systemEvent' instead.
cc.eventManager
を使わないでくれと言っています- http://docs.cocos2d-x.org/creator/api/en/classes/Node.html#on
-
It's the recommended way to register touch/mouse event for Node,
please do not use cc.eventManager directly for Node.
いつ使えなくなるかはわかりませんが現状の対応ということで
コメント
コメントを投稿