جافا سكريبت: الزناد وظيفة عندما تلمس اثنين من عناصر div / التداخل

StackOverflow https://stackoverflow.com/questions/1825806

  •  22-07-2019
  •  | 
  •  

سؤال

والعنوان يشرح ذلك حقا. كيف نفعل ذلك؟ كلا عناصر div ذات حجم مختلفة. كلا عناصر div تتحرك (أنا صنع لعبة مسج قليلا). إذا كان أحد يضرب الآخر، أريد الاشياء أن يحدث.

والشكر

هل كانت مفيدة؟

المحلول

وليس هناك حدث جافا سكريبت لonOverlap، ما عليك القيام به لحساب ما إذا كانت عناصر div متداخلة من قبل نفسك:

var valueInRange = function(value,min, max) { 
   return (value >= min) && (value <= max);
}

var overlap = function(x1,y1,w1,h1,x2,y2,w2,h2) {
   xOverlap = valueInRange(x1, x2, x2 + w2) || valueInRange(x2, x1, x1 + w1);
   yOverlap = valueInRange(y1, y2, y2 + h2) || valueInRange(y2, y1, y1 + h1);
   return xOverlap && yOverlap;
}

نصائح أخرى

وكيف حالك مما تسبب في عناصر div للتحرك؟ طريقة واحدة للقيام بذلك، بالتأكيد، سيكون لكتابة وظيفة العائدين منطقية بسيطة، نظرا اثنين من عناصر div، يعمل بها سواء كانت تتداخل (الحصول على إحداثيات أركان ومقارنة فقط عن تقاطع). ثم، في نهاية الدالة التي تسبب عناصر div على التحرك، واستدعاء هذه الدالة واتخاذ الإجراءات المناسبة إذا كان الأمر كذلك.

في الحقيقة اعتمادا على كيفية تفعلونه المتحرك قد تكون لديكم حتى إحداثيات كل من عناصر div المتاحة مما يجعل هذا فعالة جدا.

وأبعد من ذلك وأنا لست على علم بأي حال "onoverlap" أو ما شابه ذلك، لذلك فحص دوري هو السبيل عموما المطبقة فقط أستطيع أن أفكر في. قد يكون هناك طريقة أسرع المتاحة اعتمادا على كيفية بناء التعليمات البرمجية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top