
Yapanimator هو نظام الرسوم المتحركة السريع والودي فيزياء. تم بناء Yapanimator مع وضع سهولة في الاعتبار ، مما يبقيك عاقلًا ومصممك سعيدًا جدًا . جميع الرسوم المتحركة قابلة للمقاطعة ، وتشمل كتل الإكمال ، وتسمح لك بتطبيق القوات عليها (على سبيل المثال إضافة السرعة من لفتة في عملية انتقالية). لقد قمنا بتضمين مطابقة البروتوكول Animatable لبعض أنواع الرسوم المتحركة الشائعة (أنواع CG ) ، ولكن من السهل حقًا إضافة مطابقة إلى أي نوع آخر. يمكنك تحريك أي شيء يمكنك تمثيله وتكوينه مع مجموعة من الخصائص Double ، وحجم الموسيقى ، والتحول بين مسارات البيزير ، والألوان ، وضربات الفرشاة المتنوعة ، وتطول القائمة ... استخدم خيالك!
لأنه سهل الاستخدام بجنون ويصنع رسومًا متحركة جميلة ، ولهذا السبب. هناك أنظمة رسوم متحركة أخرى تعتمد على الفيزياء (على سبيل المثال ، الرسوم المتحركة الربيعية لـ Uikit ، POP Facebook) ، لكنها لا تزال تتطلب كتابة الكثير من التعليمات البرمجية ، ومسك الدفاتر ، ومسكك يدويًا لذوقنا. يمثل Yapanimator تكرار N-Th المقطر للرمز الذي نستخدمه في تطبيقاتنا الخاصة لسنوات. نجدها لا تقدر بثمن في يومنا هذا ونعتقد أنك ستفعل ذلك أيضًا.
يأتي Yapanimator بامتداد مفيد تم تثبيته إلى CALayer و UIView / NSView ، مما يوفر رسومًا رسمية واحدة تحت خصائص animatedLayer والرسوم animated ، على التوالي.

func handle ( gesture : UIPanGestureRecognizer ) {
if gesture . state == . began {
squircle . animated . cornerRadius . animate ( to : squircle . bounds . width / 2.0 )
squircle . animated . rotationZ . animate ( to : . pi )
else if gesture . state == . changed {
squircle . animated . position . instant ( to : gesture . location ( in : nil ) )
} else if gesture . state == . ended {
squircle . animated . position . animate ( to : self . view . center )
squircle . animated . cornerRadius . animate ( to : 0 )
squircle . animated . rotationZ . animate ( to : 0 )
}
} إن إنشاء رسام رسوم متحركة مخصص أمر واضح ومباشر:
initialValue هذا يحدد القيمة الأولية للرسوم المتحركة ويبلغها عن النوع الذي سيتم تحريكه.willBegin يسمى قبل بدء الحركة. إرجاع القيمة الفعلية للخاصية التي ستحركها. يتيح ذلك لمخطط الرسوم المتحركة بمزامنة هذه القيمة في حالة تغييرها خارج نطاق الرسوم المتحركة. (خياري)eachFrame يسمى كل إطار من إطار الرسوم المتحركة - وهذا عادة ما تقوم بتطبيق current.value للرسوم المتحركة. يمكنك أيضًا استخدامه للتحقق من القيم لتحفيز الإجراءات / الرسوم المتحركة الأخرى. frameAnimator = YapAnimator ( initialValue : square . frame , willBegin : { [ unowned self ] in
return self . square . frame
} , eachFrame : { [ unowned self ] ( animator ) in
self . square . frame = animator . current . value
} ) 
frameAnimator . bounciness = 1.5
frameAnimator . animate ( to : square . frame . insetBy ( dx : - 50 , dy : - 50 ) , completion : { animator , wasInterrupted in
if !wasInterrupted {
// animate back to the original value
animator . animate ( to : animator . current . value . insetBy ( dx : 50 , dy : 50 ) )
}
} ) لا تتردد في طرح سؤالك في مشكلة. سوف نرد هناك ، ونعدل هذا اقرأني/ابدأ ويكي إذا كان الإجابة يبدو أنها ستفيد الآخرين.
Yapanimator مملوكة وصيانتها من قبل YAP Studios.