باستخدام الأساسية الرسوم المتحركة، هل هناك طريقة لمجموعة الرسوم المتحركة لعدة CALayers؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولدي الوضع حيث لدي العديد من CALayers التي تبث بطريقة "بدورها القائم". I تحريك الموقف في كل من تلك CALayers، ولكن لديهم نفس المدة بالضبط. يبدأ مرة واحدة كل تلك CALayers الانتهاء من موحية، و"تحويل" الجديد، وأنها الأرواح تغيير المواقف مرة أخرى.

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

ويستخدم CAAnimationGroup لمجموعة معا الرسوم المتحركة على CALayer واحد. ولكني أتساءل، هل هناك حل بسيط لمجموعة الرسوم المتحركة، والتي من المفترض أن يكون لها نفس المدد، على عدة CALayers معا؟

قام لتشمل ردا على سؤال كيفن بالارد

ومشكلتي تكمن في ذلك. أنا خلق الرسوم المتحركة لكل من CALayers بلدي، ثم وضع تلك في NSArray. مرة واحدة أحصل على رد أن الرسوم المتحركة الفردية قد انتهت، I إزالته تشكيل NSArray. بمجرد أن يكون فارغا، وأنا مرة إنشاء الرسوم المتحركة عن كل منهم.

ومع أكثر من بضع طبقات، وهناك تأخير ملحوظ بين فيها كافة الحركات الانتهاء وبدء أخرى جديدة.

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

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

المحلول

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

وأنا موحية تصل 60 CALayers في وقت ولا تعاني من أي تأخير بين مراحل للرسوم المتحركة، ولكن أنا لا ذاكرة التخزين المؤقت الرسوم المتحركة في مجموعة من أي نوع، وأنا لست متأكدا من thge فوق لديك هناك .

وبلدي الرسوم المتحركة هي بسيطة نسبيا، وخلقت وتعلق على كل CALayer على الطاير. بلدي العفاريت هي 60px مربع واستخدام بضع عشرات الصور الممكنة لتمثيل محتواها.

في بعض الحالات هناك الرسوم المتحركة مضاعفة أنني يمكن أن تخلق مع أوقات انطلاق مختلفة (باستخدام beginTime)، وحزمة لهم حتى مع CAAnimationGroup - ولكن قد لا تكون قادرة على precalculate الرسوم المتحركة لاحقة

نصائح أخرى

إذا التفاف الرسوم المتحركة الخاصة بك في CATransaction، سوف CG التأكد من أنهم جميعا تشغيل خلال نفس التكرار من الحلقة الرئيسية.

[CATransaction البدء]. // كل ما تبذلونه من الرسوم المتحركة [CATransaction ارتكاب]؛

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

وcp21yos: يمكنك أن تستفيض في شرح الطريقة الخاصة بك؟ أحاول أن تفعل شيئا من هذا القبيل، والتي تنطوي على تحرك عدة طبقات في وقت واحد، أكثر من مرة. قال لك: "في نهاية الحركات أرفق المرحلة المقبلة للرسوم المتحركة". هل يمكن ان توضح ذلك؟ عندما كنت في محاولة لوضع منطق لأداء الرسوم المتحركة إضافية في حدث animationDidStop، إلا أن الرسوم المتحركة الماضي والتي تحدث، بدلا من سلسلة كاملة من الرسوم المتحركة.

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