2009-04-21 9 views
14

के लिए टकराव का पता लगाने को संभालती है हम Draggable JQuery UI प्लगइन का उपयोग कर रहे हैं और हमारे तत्वों के बीच ओवरलैपिंग को अस्वीकार करने की आवश्यकता है। हम खुद को कुछ टकराव का पता लगा सकते हैं लेकिन एक परीक्षण पैकेज का उपयोग करना पसंद करेंगे। कोई सुझाव?कृपया एक JQuery प्लगइन की अनुशंसा करें जो ड्रैगगेबल तत्वों

उत्तर

1

गूगल मुझसे कहता है कि gameQuery, एक JQuery प्लगइन, एक "टक्कर" समारोह है: उपरोक्त पृष्ठ पर शब्द "टक्कर" के लिए

http://gamequery.onaluf.org/#manual

खोजें।

यह गूगल खोज आप अन्य विकल्पों में से एक जोड़े को दे सकते हैं:

http://www.google.com/search?q=jquery+collision+detection

3

jQuery प्लगइन की त्वरित खोज जाता:

Collidable Draggables

लग रहा है यह अभी भी जल्दी है, लेकिन हो सकता है बाहर की जाँच करने लायक हो।

0

मान लिया जाये, लेकिन मुझे लगता है कि आप यहां पाया जा सकता की आवश्यकता होगी क्या:

$.event.special.drop

यह डे ड्रॉप घटना बनाने के लिए jQuery प्रसिद्ध $ .event.special.drag उपयोग करता है। आप .bind("drop", function(event){ के तहत अपना स्वयं का जावास्क्रिप्ट कोड डाल सकते हैं इस फ़ंक्शन के अंदर यह तत्व आपके द्वारा परिभाषित कक्षा "ड्रॉप" के साथ ऑब्जेक्ट का प्रतिनिधित्व करता है और event.dragTarget वह वस्तु है जिसे खींचा जा रहा है।

उपरोक्त लिंक साइट पर अधिक दस्तावेज़। वही था जो मुझे वैसे भी चाहिए।

2

मुझे पता है कि यह प्रश्न काफी पुराना है, लेकिन शायद आपको यह उपयोगी लगेगा: हमारे Collision Check Plugin for jQuery

विवरण जर्मन में है, लेकिन यह आत्म-व्याख्यात्मक होना चाहिए। आप या तो दो एकल तत्वों या तत्वों के सेट का उपयोग कर सकते हैं और सभी टकराव तत्वों का एक सेट वापस ले लेंगे।

14

आप jquery-collision प्लस jquery-ui-draggable-collision आज़मा सकते हैं। पूर्ण प्रकटीकरण: मैंने बस सोर्सफोर्ज पर लिखा और इसे जारी किया।

इस अनुमति देता है:

var hit_list = $("#collider").collision(".obstacle"); 

जो सभी ".obstacle" जो आपस में मिलते "#collider" की सूची है।

दूसरा अनुमति देता है:

$("#collider").draggable({ obstacle: ".obstacle" }); 

जो तुम (अन्य बातों के अलावा) देता है, एक "टक्कर" इस ​​घटना के लिए बाध्य करने के लिए:

$("#collider").bind("collision", function(event,ui){...}); 

और तुम भी सेट कर सकते हैं:

$("#collider").draggable({ obstacle: ".obstacle", preventCollision: true }); 

"# कोलाइडर" को खींचने के दौरान किसी भी ".obstacle" को ओवरलैप करने से रोकने के लिए।

+1

मैंने अभी आपके कोलाइडर स्क्रिप्ट को डाउनलोड किया है, यह शानदार है! होवर पर बढ़ने वाले डीआईवी के ग्रिड होने के बारे में मैं कैसे जाउंगा, और दूसरा (ढंका नहीं) divs छोटा हो गया है क्योंकि ढंका हुआ div बढ़ता है? – Tom

+0

@tom: सुनिश्चित नहीं है कि इसका मतलब क्या है। यदि आप होवर पर अपना आकार बदलना चाहते हैं, तो उन्हें सभी वर्ग "बढ़ने योग्य" बनाएं और होवर कॉलबैक में '$ (यह)' के आकार को बड़ा और '$ (" बढ़ने योग्य ") में बदलें। ($ (यह)) 'छोटे से। सुनिश्चित नहीं है कि टकराव के साथ क्या करना है, इसलिए मुझे गलतफहमी हो सकती है। हालांकि कुडोस के लिए धन्यवाद, इसका मतलब मेरे लिए बहुत मायने रखता है। :-) – eruciform

+1

उत्तर के लिए धन्यवाद। मैं इस प्रभाव को पूरा करने की कोशिश कर रहा हूं (http://www.adidas.com/us/homepage.asp)। जैसा कि आप देख सकते हैं, क्योंकि एक बॉक्स बड़ा हो जाता है, अन्य लोग इसके आकार को समायोजित करने के लिए सिकुड़ते हैं। मुझे लगता है कि टकराव का पता लगाने का यह सबसे अच्छा तरीका है, क्योंकि मुझे एक बॉक्स बढ़ने की दिशा में सिकुड़ने के लिए बक्से की जरूरत है, जो आपकी प्लगइन का पता लगा सकता है (एन एस ई और डब्ल्यू)। – Tom

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