التأثير الهدف: بعد النقر فوق زر الرسوم المتحركة ، تدور كل بطاقة وتنتشر إلى أي موضع في النصف العلوي من الشاشة ويعود إلى الموضع الأولي. أشبه بمهارة الرسوم المتحركة للسكين الذكور لول :)
1: إنشاء كائن بطاقة
من أجل _ في 0 ... 49 {Let CardSet = uiimageView (الصورة: uiimage (اسمه: "cardbacklandscape")) لا شيء)قم بإنشاء كل بطاقة باعتبارها uiimageView. من أجل تشغيل هذه البطاقات في وقت لاحق ، أستخدم صفيفًا لأحملها في نفس الموقف. بعد إنشائها ، أرسل رسالة محددة باستخدام إشعار محلي لإخبار مراقب هذه الصفحة بأن مجموعة البطاقات قد تم إنشاؤها ويمكنها البدء في تنفيذ الرسوم المتحركة الثانية.
2: أولاً ، تحتاج إلى إيقاف تشغيل تفاعل المستخدم للزر الذي يبدأ الرسوم المتحركة. إذا كان قيد التشغيل ، فإن النقر بشكل مستمر سيقوم بإنشاء 50 بطاقة في كل مرة ، مما يؤدي إلى عالق البرنامج أو حتى معلق
وقت التأخير هنا هو إضافة وقت تأخير إلى الخيط فقط لجعل الرسوم المتحركة أقل صلابة
في كل مرة أقوم بإضافة رسوم متحركة دوران إلى كائن بطاقة Subcript المقابلة وتغيير أصلها. قبل أن أقوم بتنفيذ هذه الرسوم المتحركة مع الرسوم المتحركة Uiview ، فكرت في إضافة منحنى Bezier إلى كل بطاقة. سيكون ذلك أكثر قابلية للسيطرة. ومع ذلك ، بسبب الوقت ، استخدمت uiviewanimation فقط. يتم تنفيذ الرسوم المتحركة التناوب المضافة إلى البطاقة باستخدام مكتبة Pop Animation ، والتي تستخدم الرسوم المتحركة الأساسية هنا. بعد هذه الخطوة ، سيتم تدوير كل بطاقة وانتشر إلى مواقع مختلفة. عندما ينتهي وقت التأخير ويؤدي إلى الإخطار المحلي لإرسال ملفوف خلط ، سيقوم مراقب هذه الصفحة بتنفيذ الرسوم المتحركة التالية ، أي استعادة كل بطاقة إلى نقطة انطلاق الرسوم المتحركة.
func shuffletheset () {self.shufflebutton.userInterActionEnable = false دع الوقت lawrittime = dispatch_time (dispatch_time_now ، int64 (0.5 * double (nsec_per_sec))) dispatch_after (develtime ، dispatch_main_queue () {) { nsnotificationcenter.defaultCenter (). postNotificationName ("ShuffleFinish" ، الكائن: لا شيء) للعد في 0 ... 49 {uiview.animatewithduration (0.3 ، الرسوم المتحركة: {let cardrotateanimation = popbasicanimation (propertyNamed: kpoplayertation) cardrotateanimation.tovalue = cgfloat (m_pi * 2.0) cardrotateanimation.duration = 1 // cardrotateanimation.duration = double (count> 5؟ count/2: count/10) self.cardsetlist [count] .layer.pop_addanimation (cardrotateanimation ، forkey: "cardrotation") self.cardsetlist [count] .frame.origin = cgpointmake (cgfloat (arc4random ()) ٪ (250 - 0 + 1) ، cgfloat (arc4rand). 74) self.view.layoutifneeded () self.landscapeCardback.RemoveFromSuperView ()})}}3: استعد كل بطاقة إلى الموضع الأولي وقم بتعيين عنوان الزر على حالة قطع البطاقة.
للعد في 0 ... 49 {uiview.animatewithduration (0.3 ، الرسوم المتحركة: {self.cardsetlist [count] .center = self.landscapeCardback.center})إن الحاجة إلى قطع البطاقات بعد البطاقة هي قطع البطاقات. لأسباب الوقت ، ستستمر تحديث تأثيرات الرسوم المتحركة اللاحقة في الأسبوع المقبل ...
ما ورد أعلاه هو طريقة تنفيذ تأثير الرسوم المتحركة Swift Lishuckled التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!