আমি আইওএসে খুব সুন্দরভাবে CALayer
একটি CGPath
(চতুষ্কোণ) বরাবর একটি অ্যানিমেট করছি । তবে আমি অ্যাপল (ইয়েজইন / ইজিয়ুট ইত্যাদি) সরবরাহিত কয়েকটি অপেক্ষা আরও আকর্ষণীয় স্বাচ্ছন্দ্য ফাংশনটি ব্যবহার করতে চাই । উদাহরণস্বরূপ, একটি বাউন্স বা ইলাস্টিক ফাংশন।
মিডিয়াটাইমিং ফাংশন (বেজিয়ার) দিয়ে এই জিনিসগুলি করা সম্ভব:
তবে আমি টাইমিং ফাংশনগুলি তৈরি করতে চাই যা আরও জটিল। সমস্যাটি হ'ল মিডিয়া টাইমিংয়ের জন্য একটি কিউবিক বেজিয়ার লাগবে যা এই প্রভাবগুলি তৈরি করতে যথেষ্ট শক্তিশালী নয়:
(উত্স: স্প্যারো-ফ্রেমওয়ার্ক.org )
কোড অন্যান্য অবকাঠামো সহজ যথেষ্ট উপরে, যা এই খুব হতাশাজনক তোলে তৈরি করুন। নোট করুন যে বক্ররেখাগুলি ইনপুট সময়কে আউটপুট সময় (টিটি কার্ভ) এ ম্যাপ করে এবং সময়-অবস্থান বক্ররেখা না। উদাহরণস্বরূপ, ইজিজআউটবাউন (টি) = টি নতুন টি দেয় । তারপরে সেই টি চলাচলের চক্রান্ত করার জন্য ব্যবহৃত হয় (বা আমাদের সম্পত্তি যা যা করা উচিত) plot
সুতরাং, আমি একটি জটিল রীতিনীতি তৈরি করতে চাই CAMediaTimingFunction
তবে কীভাবে এটি করব তা সম্পর্কে আমার কোনও ধারণা নেই বা এটি এমনকি যদি সম্ভব হয় তবে? কোন বিকল্প আছে?
সম্পাদনা করুন:
পদক্ষেপে এখানে একটি দৃ concrete় উদাহরণ। খুব শিক্ষামূলক :)
আমি বিন্দু থেকে একটি লাইন বরাবর একটি বস্তু এনিমেট করতে চান একটি থেকে খ , কিন্তু আমি এটা "ফিরে আসা" করতে চান উপরে easeOutBounce বক্ররেখা ব্যবহার লাইন বরাবর তার আন্দোলন। এর অর্থ এটি একটি থেকে বি পর্যন্ত সঠিক রেখাটি অনুসরণ করবে তবে বর্তমান বেজিয়ার-ভিত্তিক ক্যামিডিয়াটাইমিং ফাংশনটি ব্যবহার করে যা সম্ভব তার চেয়ে আরও জটিল পদ্ধতিতে ত্বরান্বিত ও হ্রাস পাবে।
সেই লাইনটিকে সিজিপিথের সাথে নির্দিষ্ট কোনও স্বেচ্ছাচারী বক্ররেখা তৈরি করতে দিন movement এটি এখনও সেই বক্ররেখার সাথে সরানো উচিত তবে এটি লাইন উদাহরণের মতো একইভাবে ত্বরান্বিত ও হ্রাস করতে হবে।
তত্ত্বগতভাবে আমি মনে করি এটি এর মতো কাজ করা উচিত:
একটি কীফ্রেম অ্যানিমেশন হিসাবে আন্দোলন বক্ররেখা বর্ণনা দেয় পদক্ষেপ (টি) = P , যেখানে T সময় [0..1], হয় পি সময় গণনা করা অবস্থান টন । সুতরাং সরান (0) বক্ররেখার শুরুতে অবস্থানটি ফিরিয়ে দেয়, ( মাঝের দিকে (0.5) সঠিক মাঝখানে সরান এবং শেষে (1) সরান । একটি একটি সময়জ্ঞান ফাংশন ব্যবহার করে সময় (টি) = T প্রদান টি মান পদক্ষেপ আমাকে দিতে হবে আমি কি চাই। একটি উত্থান প্রভাব জন্য, সময় ফাংশন সময় (0.8) এবং সময় (0.8) জন্য একই টি মান ফিরে আসবে(একটি উদাহরণ)। একটি ভিন্ন প্রভাব পেতে কেবল সময় ফাংশনটি প্রতিস্থাপন করুন।
(হ্যাঁ, চারটি লাইন সেগমেন্ট তৈরি করে এবং এতে যোগ দিয়ে লাইন-বাউন্সিং করা সম্ভব যা পিছন পিছনে যায়, তবে এটির প্রয়োজন হবে না all সর্বোপরি, এটি কেবল একটি সরল রৈখিক কার্য যা সময়কে মানকে পজিশনে ম্যাপ করে ))
আমি আশা করি আমি এখানে অর্থবোধ করছি।