คำถามติดแท็ก tween

6
จะสร้างฟังก์ชันการค่อยๆเปลี่ยนแบบกำหนดเองด้วย Core Animation ได้อย่างไร
ฉันกำลังสร้างภาพเคลื่อนไหวCALayerตามCGPath(QuadCurve) ได้ดีทีเดียวใน iOS แต่ฉันต้องการใช้ฟังก์ชั่นการค่อยๆเปลี่ยนที่น่าสนใจกว่าที่Apple มีให้ (EaseIn / EaseOut ฯลฯ ) ตัวอย่างเช่นฟังก์ชันตีกลับหรือยืดหยุ่น สิ่งเหล่านี้สามารถทำได้กับ MediaTimingFunction (bezier): แต่ฉันต้องการสร้างฟังก์ชันจับเวลาที่ซับซ้อนกว่านี้ ปัญหาคือเวลาของสื่อดูเหมือนจะต้องใช้ลูกบาศก์เบซิเอร์ซึ่งไม่มีประสิทธิภาพเพียงพอที่จะสร้างเอฟเฟกต์เหล่านี้: (ที่มา: sparrow-framework.org ) รหัสเพื่อสร้างดังกล่าวข้างต้นก็เพียงพอที่เรียบง่ายในกรอบอื่น ๆ ซึ่งจะทำให้เรื่องนี้น่าผิดหวังมาก โปรดทราบว่าเส้นโค้งกำลังทำแผนที่เวลาอินพุตกับเวลาเอาต์พุต (เส้นโค้ง Tt) ไม่ใช่เส้นโค้งตำแหน่งเวลา ยกตัวอย่างเช่นeaseOutBounce (T) = Tส่งกลับใหม่ที จากนั้นtจะถูกใช้เพื่อพล็อตการเคลื่อนไหว (หรือคุณสมบัติใด ๆ ที่เราควรทำให้เคลื่อนไหว) ดังนั้นฉันต้องการสร้างแบบกำหนดเองที่ซับซ้อนCAMediaTimingFunctionแต่ฉันไม่รู้ว่าจะทำอย่างไรหรือถ้าเป็นไปได้? มีทางเลือกอื่นหรือไม่? แก้ไข: นี่คือตัวอย่างที่เป็นรูปธรรมในขั้นตอนต่างๆ น่าศึกษามาก :) ฉันต้องการทำให้วัตถุเคลื่อนไหวตามเส้นจากจุดaถึงbแต่ฉันต้องการให้วัตถุนั้น "เด้ง" การเคลื่อนที่ไปตามเส้นโดยใช้เส้นโค้งความสะดวกออกด้านบน ซึ่งหมายความว่ามันจะเป็นไปตามเส้นตรงจากaถึงbแต่จะเร่งและชะลอตัวลงด้วยวิธีที่ซับซ้อนกว่าสิ่งที่เป็นไปได้โดยใช้ CAMediaTimingFunction ที่ใช้ bezier ในปัจจุบัน ช่วยให้เส้นนั้นมีการเคลื่อนไหวของเส้นโค้งตามอำเภอใจที่ระบุด้วย CGPath …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.