2014-09-01 8 views
10

पर टच इवेंट संलग्न करें मैं फ़ेज़र के लिए नया हूं और अभी मैं फ़ेज़र v.2.0.7 का उपयोग कर रहा हूं। मैं क्या करना चाहता हूं एक स्प्राइट हैंडल को टच इवेंट बनाना है।फ़ेज़र: स्प्राइट

मैं एक स्प्राइट ऑब्जेक्ट में onTap कैसे संलग्न कर सकता हूं?

मुझे पता है कि स्पर्श घटना sprite_obj.events.onInputDown साथ संभव हो जाएगा, लेकिन अभी भी मैं इस्तेमाल किया onInputUp क्योंकि या तो जब वहाँ एक पॉपअप/मोडल (चेतावनी) onInputDown के बाद निकाल दिया है, तो आप घटना श्रोता काम करने के लिए उस के बाद दो बार क्लिक करने की जरूरत फिर। (My personal workaround for this issue is using inInputUp.)

एक और बात है कि मैं कोशिश की है मेरी कैनवास वस्तु, canvas.input.onTap.add जो मुझे लगता है कि मेरा लक्ष्य प्राप्त करने के लिए फिट नहीं करता है पर onTap जोड़ना है। हां, अब यह टच इवेंट्स को संभाल सकता है लेकिन समस्या यह है कि मैं केवल कैनवास पर स्प्राइट छवि पर टच इवेंट को सीमित करना चाहता हूं, न कि संपूर्ण कैनवास।

क्या कोई मेरी मदद कर सकता है। धन्यवाद।

उत्तर

24

आप पहली बार निवेश के लिए स्प्राइट सक्षम करना होगा:

sprite.inputEnabled = true;

फिर आप की घटनाओं, जैसे स्प्राइट डिस्पैच जब यह इनपुट में शामिल है में से किसी को सुन सकते हैं:

sprite.events.onInputDown.add(onDown, this); 

... 

function onDown(sprite, pointer) { 
// do something wonderful here 
} 

कॉलबैक 2 पैरामीटर भेजे गए हैं: स्प्राइट और पॉइंटर जो इनपुट इवेंट (जैसे बहु-इनपुट सिस्टम में अक्सर भिन्न हो सकता है)

पॉइंटर में बहुत सारी संपत्तियां हैं जिन पर आप पहुंच सकते हैं, जैसे कि इसे नीचे रखा गया था, आंदोलन इतिहास इत्यादि। विवरण के लिए Pointer docs देखें।

स्प्राइट घटनाओं के बहुत सारे है, लेकिन इन इनपुट संबंधित लोगों को (इस Phaser स्रोत कोड से सीधे उठाया है) कर रहे हैं:

/** 
* @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. 
* @default null 
*/ 
this.onInputOver = null; 

/** 
* @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. 
* @default null 
*/ 
this.onInputOut = null; 

/** 
* @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. 
* @default null 
*/ 
this.onInputDown = null; 

/** 
* @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. 
* @default null 
*/ 
this.onInputUp = null; 

/** 
* @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. 
* @default null 
*/ 
this.onDragStart = null; 

/** 
* @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. 
* @default null 
*/ 
this.onDragStop = null; 
+0

धन्यवाद दोस्त। लेकिन मैं इनपुट डाउन पर उपयोग नहीं कर सकता :(क्यों? क्योंकि इस मुद्दे में वर्णित चेतावनी() और बूटस्ट्रैप मोडल जैसे पॉपअप के साथ समस्या है: http://www.html5gamedevs.com/topic/4355-click-on-an-image- काम नहीं कर रहा/ – Vainglory07

+0

मैं उस यूआरएल में उस मुद्दे की प्रासंगिकता को वास्तव में समझ नहीं पा रहा हूं जो आपने कहा था कि आप क्या करने की कोशिश कर रहे थे। ऑनटाउनडाउन एक डोम घटना नहीं है, यह एक सिग्नल है। अगर आपको डीओएम कार्यक्रमों को कैप्चर करने की आवश्यकता है उन्हें डीओएम तत्वों पर कब्जा करने के लिए, उन्हें फिक्र नहीं किया जा सकता है। – PhotonStorm

+0

परिदृश्य ऐसा है जब मैं कैनवास पर एक स्प्राइट छवि पर क्लिक करता हूं और कुछ गड़बड़ है, मैं एक मोडल के रूप में एक त्रुटि दिखाऊंगा। और यही वह बिंदु है जहां इनपुट डाउन पर समस्या चला जाता है। इसलिए मैं एक डोम इवेंट कैप्चर नहीं कर रहा हूं। यह केवल उस फेजर इनपुट इवेंट पर है जिस पर मैं भरोसा करता हूं। खराब अंग्रेजी सर के लिए खेद है। धन्यवाद – Vainglory07

0

क्या आपने यह कोशिश की है? this.input.onDown.add (obj.method, obj);

संबंधित मुद्दे