سؤال

هل من الممكن تغيير المواقع من الرمزية مع دوجو أدوات هذا dnd api ؟ في هذه اللحظة عندما سحب ، الرمزية من سحب البند يظهر على يمين و أسفل الماوس.أريد أن يكون في نفس الموقف مؤشر الماوس.ركضت بعض اختبارات قابلية الاستخدام على طلبي, و يبدو أن معظم الناس محاولة سحب الرمزية في إسقاط المنطقة بدلا من تحريك المؤشر على انخفاض المنطقة.أي مساهمة من شأنه أن يكون لطيفا.وذلك بفضل!

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

المحلول

آسف, لا يمكن لأسباب فنية.

تحديث:من خلال المطالب الشعبية هذه هي أسباب فنية:

  • عندما يكون لديك عقدة تحت الماوس العقدة يحصل كل أحداث الماوس.
  • أحداث الماوس فقاعة يصل الوالد سلسلة.
  • الآن تخيل أنك تتحرك هذه العقدة مع الماوس — هذه العقدة دائما الحصول على كل أحداث الماوس.
  • وهو ما يعني أن أي عقدة أخرى ، على سبيل المثال ، وهو هدف لا يمكن الحصول على الماوس الأحداث إلا إذا كان أحد الوالدين من نقل عقدة.عادة هذا ليس هو الحال.

ولكن أنا أعرف أن الآخرين يمكن أن تفعل ذلك!وينبغي أن يكون من الممكن!نعم هو ممكن من حيث المبدأ:

  • دعونا تسجيل كل هدف العقد.
  • دعونا الصيد ذات الصلة الماوس نقل الأحداث مباشرة على أعلى الوالد (الوثيقة).
  • عندما تم الكشف عن عملية سحب ، دعونا نفعل التالية:
    1. حساب الهندسة (المربعات المحيطة) جميع الأهداف.
    2. على كل تحرك الماوس يتيح التحقق إذا الحالية الماوس موقف يتقاطع مع الهدف.نقاط المكافأة ل "A+" الطالب:كشف التداخل مع العقد الأخرى ، ه.ز ، عندما يكون الهدف هو جزئيا غامضة لأسباب تجميلية ، العملية هذه الحالة بشكل صحيح.
    3. إذا الحالية الماوس موقف يتقاطع مع هدف دعونا بدء "هي" الإجراءات ، على سبيل المثال ، تظهر بعض الإشارات حتى النهاية المستخدم يعرف أنها يمكن أن تسقط الآن.

لماذا دوجو لا تفعل ذلك ؟ لعدد من الأسباب التقنية (أخيرا وصلنا إلى هناك!):

  • للعقدة هندسة العمليات الحسابية المعروف عربات التي تجرها الدواب في معظم المتصفحات.حالما الجداول المعنية ، أو أي دولة أخرى غير تافهة يعني وضع لا يمكن أن تكون 100 ٪ على يقين من أن المربع المحيط هو الصحيح.
  • هندسة العمليات الحسابية هي عملية مكلفة ، و علينا أن نفعل ذلك مرة واحدة على الأقل في كل عملية السحب على جميع الأهداف على افتراض أنه لا يمكن إجراء تغييرات أثناء عملية السحب (ليس دائما).المتصفح قد انحسر العقد لأسباب عديدة ⇒ فإنه يمكن نقل/تغيير حجم القائمة الأهداف ، لذلك علينا أن نكون يقظين.
  • عادة المحسوبة المربعات يتم الاحتفاظ بها في قائمة ⇒ التحقق من قائمة التقاطعات O(n) (خطي) ⇒ لا مقياس فضلا عن عدد من أهداف النمو.
  • جميع الماوس معالجات الأحداث يجب أن تكون سريعة ، وإلا المتصفح الماوس التعامل مع الحدث مرفق "كسر" مما يؤدي إلى يمكن التنبؤ بها من الآثار الجانبية.انظر النقاط السابقة لأسباب لماذا الماوس معالجة الحدث يمكن أن تكون بطيئة.
  • تحسين البحث الخطي هو ممكن مثلا 2D المكانية الأشجار يمكن استخدامها ، ولكن ذلك يؤدي إلى أكثر (أكثر من ذلك بكثير) شفرة جافا سكريبت ⇒ أكثر الأشياء تحميل على جانب العميل ⇒ عادة أنه لا يستحق ذلك.

كيف أعرف ذلك ؟ لأن دوجو المستخدمة في هذا النوع من drag'n'drop في الإصدارات السابقة ، ونحن مرضت و تعبت القتال المشاكل المذكورة أعلاه.أي تحسين معركة شاقة ، مما أدى إلى زيادة حجم التعليمات البرمجية.وأخيرا قررنا ضد إعادة اختراع و تكرار آليات بنيت بالفعل في المتصفح.المتصفح لا تقريبا نفس العمل:يحسب هندسة العقد ، يجد الأساسية عقدة ، وتبعث تحرك الماوس الحدث بشكل مناسب.

التنفيذ الحالي لا استخدم الماوس تحريك الأحداث و لا حساب الهندسه.بدلا من ذلك تعتمد على الماوس فوق/خارج الأحداث الكشف عن الأهداف بعد السحب بدأت.أنه يعمل بشكل موثوق موازين جيدا.

آخر التجاعيد في هذه القصة:دوجو يعامل الأهداف كما حاويات — شائع جدا في حالة استخدام (عربات التسوق ، وإعادة ترتيب البنود, تحرير الهرمية).الخطية حاويات عام الأشجار يتم تنفيذها في الوقت الراهن, حاويات مخصصة ممكنة.عندما سحب وإسقاط يمكنك أن ترى سحب وإسقاط العناصر في الموقف الصحيح داخل حاوية الهدف ، مثل إدراج منهم بين العناصر الموجودة.تنفيذ هذه الميزة باستخدام حسابات هندسية و الشيكات ستكون باهظة الثمن.

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