سؤال

الآن لدي رقبة زجاجة في برنامجي أحاول الكتابة. أحاول استخدام لفتة قرصة للتحكم في مقياس UIImage. إنه حساب المقياس الذي يتسبب في إبطاء البرنامج وتصبح متقلبة. فيما يلي المعادلة.

currentScale = (currentDistance / initialDistance) * scaleMod;

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

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

المحلول

1) لا يمكنك حساب scaleMod / initialDistance مرة واحدة بينما يتغير CurrentDistance. وبهذه الطريقة ، يمكنك فقط القيام بهذه الأوقات التي تقوم بها CurrentDistance ، والتي تزيل الفجوة.

2) تأكد من أن هذا هو في الواقع عنق الزجاجة. على الأرجح ليس كذلك ، ما لم تفعل شيئًا خاطئًا حقًا.

نصائح أخرى

بالنسبة لأي نوع من الأسكواش الثلاثة ، يمكن بسهولة القيام بهذا الحساب ملايين المرات في الثانية مع تأثير كبير في الأداء. مشكلتك في مكان آخر.

إذا قمت بإصلاح ScaleMod و OriginalDistance إلى قوى 2 ، فيمكنك استخدام نوبات للضرب والتقسيم بشكل أسرع.

يرى هنا للرجوع إليها.

هل يمكن تخزين Scalemod / inialDistance. عندما يكون التحجيم نشطًا (لا تزال أصابع المستخدم على الشاشة) ، اضرب هذه القيمة حسب CurrentDistance حسب الحاجة.

بمجرد انتهاء المستخدم ، قم بتخزين قيمة Scalemod / OriginalDistance الجديدة في المرة التالية التي تحدث فيها.

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

أيضًا ، حاول أن تخرج من الانقسام كضرب من قبل المتبادل.

تحقق من ذلك الأولي! = 0 أولاً! قون

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