سؤال

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

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

المحلول

لقد نفذت واحدة نفسي في الآونة الأخيرة.هذه هي الخطوات التي أخذت.

  1. تحتاج إلى قياس سرعة مؤشر الماوس (إما الماوس أو الإصبع)
  2. تطبيق بسيط فيزياء الجسيمات حلقة.معلومات حول كيفية القيام بذلك يمكن العثور عليها هنا
  3. إعطاء الخاص بك الجسيمات "حدود" باستخدام الرياضيات مستمدة من العرض الخاص بك التمرير الطائرة و عرض إطار العرض
  4. باستمرار إضافة الفرق بين الماوس السرعة و سرعة الجزيئات إلى الجسيمات سرعة ، وبالتالي فإن الجسيمات سرعة "مباريات" الماوس سرعة طالما انها تتحرك.
  5. توقف عن فعل الخطوة 4 في أقرب وقت المستخدم يرفع الإصبع.الفيزياء حلقة تأخذ الرعاية من الجمود.
  6. إضافة الشخصية الخاصة بك يزدهر مثل "الوفير" هوامش و التمرير السلس "مرساة" النقاط التي تعمل على مفارقة زينو لحساب الحركة.
  7. لقد نسيت تقريبا:أخذ إحداثيات المستمدة من أعلاه ، واستخدامه بمثابة موقع التمرير الطائرة.

أنا ربما سوف مفتوح المصدر هذا القانون قريبا.متى تحتاج هذا ؟

تحرير:تم تغيير الرابط.آسف وأشار إلى قليلا صفحة الخطأ.edit2:أو لا ؟ على أي حال, الصفحة الأصلية لا ترتبط كان أول رابط المرتبطة حاليا على الصفحة.

نصائح أخرى

ومادمت قد سئلت هذا في الأصل، وأنا منذ ذلك الحين تقرأ بعناية الكود لpastrykit، الإطار الذي التفاح وتكرار بالضبط التمرير الحركية في جافا سكريبت. ليس هناك فيزياء الجسيمات loop- يتم قياس سرعة اللمس في هذه اللحظة بالضبط التي يتم رفع الاصبع. من تلك النقطة، والرسوم المتحركة التمرير باستخدام دالة تخفيف بسيطة يستخدم سرعة كمعلمة إدخال.

أنا فقط واضاف سكرولر القطعة إلى هاتفي النقال واجهة المستخدم الرسومية الإطار ، لذلك اعتقدت أن حصة بلدي الحل هنا.

لأن هذا هو جميلة المسألة المعقدة ، قررت تقسيمها إلى أصغر إلى حد ما مستقلة المهام الفرعية على النحو التالي:

  1. الأساسية وظيفة التمرير:هذه المهمة يتمثل في التعامل مع السحب الأحداث في أبسط الطريق الذي هو طريق التمرير محتويات وفقا السحب المسافة والاتجاه.هذا هو بسيط نسبيا لتنفيذ الوحيد الجانب صعبة هو أن تعرف متى تبدأ عملية سحب مقابلعندما تمر أسفل الصنبور حدث للطفل القطعة داخل للتمرير المنطقة.

  2. انتقل الجمود:هذا واحد كان الأكثر تحديا.الفكرة هنا هي أن التمرير يجب أن يستمر لبعض الوقت بعد المستخدم يرفع إصبع ، إبطاء حتى يتوقف تماما.لهذا كنت في حاجة إلى فكرة انتقل السرعة.لسوء الحظ أنها ليست دقيقة لحساب السرعة من عينة واحدة ، حتى حين المستخدم التمرير تسجيل آخر ن حركة الأحداث في التعميم العازلة ، جنبا إلى جنب مع الوقت في كل حدث.وجدت N=4 أن تعمل على ما يرام على اي فون و HP TouchPad.عندما الاصبع رفع يمكنني حساب تقريبي تبدأ السرعة من أجل بالقصور الذاتي التمرير من الحركة المسجلة.تعريف سلبي تسارع معامل تستخدم معيار الحركة الصيغ (انظر هنا) السماح التمرير يموت بشكل جيد.إذا كان موضع التمرير تصل إلى الحدود في حين لا يزال في الحركة أنا فقط إعادة تعيين سرعة 0 إلى منعها من الخروج من النطاق (التوقف المفاجئ موجهة المقبل).

  3. مرنة التمرير حدود:بدلا من الذهاب إلى توقف مفاجئ عندما انتقل تصل إلى نهاية أردت القطعة انتقل إلى بعض ، ولكن تقدم المقاومة.لهذا أنا مددت يسمح انتقل واسعة على طرفي بمبلغ أنني محددة بوصفها وظيفة من القطعة الأبعاد.لقد وجدت أن إضافة نصف العرض أو الارتفاع في نهاية كل عمل بشكل جيد.خدعة لإعطاء التمرير الشعور أنه يقدم بعض المقاومة لضبط عرض انتقل المواقف عندما تكون خارج النطاق.أنا استخدم تقليص بالإضافة إلى التباطؤ وظيفة هذا (هناك بعض جيدة تخفيف وظائف هنا).

  4. الربيع السلوك:منذ الآن فمن الممكن أن انتقل الماضي نطاق صالح, أنا في حاجة إلى وسيلة لجلب سكرولر العودة إلى موقف صحيح إذا كان المستخدم تركها خارج النطاق.ويتحقق هذا عن طريق ضبط انتقل تعويض عندما سكرولر يأتي إلى توقف في الخروج من نطاق الموقف.التعديل الوظيفة التي وجدت لإعطاء لطيفة يقظ ننظر إلى تقسيم المسافة من الوضع الحالي إلى الوضع المطلوب من خلال ثابتة و تتحرك ويقابل هذا المبلغ.أكبر المستمر أبطأ في الحركة.

  5. التمرير:لمسة نهائية إضافة تراكب التمرير التي تتلاشى عند التمرير يبدأ وتتلاشى عندما تنتهي.

هل نظرت إلى وظائف تخفيف روبرت بينر ل؟

http://www.robertpenner.com/easing/

وIIRC كانت هذه أصلا لأكشن وكانت موجودة منذ فترة طويلة.

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

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