2010-04-21 10 views
5

में एक स्प्राइट को एनिमेट कैसे कर सकते हैं मान लें कि मेरे पास 4 छवियां हैं और मैं इन 4 छवियों को एक चरित्र को एनिमेट करने के लिए उपयोग करना चाहता हूं। 4 छवियां चरित्र चलने का प्रतिनिधित्व करती हैं। मैं एनीमेशन को तब तक दोहराना चाहता हूं जब तक कि मैं स्थानांतरित करने के लिए कुंजी दबाता हूं लेकिन जब मैं इसे दबाता हूं तो उसे रोकने के लिए। अगर आपको यह पता नहीं है तो इसे एसएफएमएल विशिष्ट होने की आवश्यकता नहीं है, केवल बुनियादी सिद्धांत वास्तव में मेरी मदद करेगा।आप एसएफएमएल

धन्यवाद।

उत्तर

10

आप कुछ साधारण प्रकार की राज्य मशीन चाह सकते हैं। जब कुंजी नीचे है (sf::Input's IsKeyDown method देखें), "एनिमेटेड" स्थिति में वर्ण रखें। जब कुंजी नीचे नहीं है, तो "एनिमेटेड" स्थिति में वर्ण रखें। बेशक, आप हमेशा इस "राज्य" को छोड़कर छोड़ सकते हैं और जो कुछ मैंने नीचे उल्लेख किया है (ठीक वही है जो आप कर रहे हैं) के आधार पर कर सकते हैं।

फिर, यदि चरित्र "एनिमेटेड" स्थिति में है, तो अगली "छवि" प्राप्त करें (उस पर अधिक जानकारी के लिए अगला पैराग्राफ देखें)। उदाहरण के लिए, यदि आपकी छवियां एक साधारण 4 तत्व सरणी में संग्रहीत हैं, तो अगली छवि (currentIndex + 1) % ARRAY_SIZE पर होगी। आप जो कर रहे हैं उसके आधार पर, आप अपने छवि फ्रेम को एक अधिक परिष्कृत डेटा संरचना में स्टोर करना चाह सकते हैं। यदि चरित्र "एनिमेटेड" स्थिति में नहीं है, तो आप यहां कोई अपडेट नहीं करेंगे।

यदि आपकी "4 छवियां" एक ही छवि फ़ाइल में हैं, तो आप प्रदर्शित छवि के हिस्से को बदलने के लिए sf :: Sprite's SetSubRect विधि का उपयोग कर सकते हैं। यदि आपके पास वास्तव में 4 अलग-अलग छवियां हैं, तो आपको छवियों को स्विच करने के लिए शायद एसएफ :: स्प्राइट की SetImage विधि का उपयोग करने की आवश्यकता होगी।

+1

आप फ़्रेमेट को कैसे लागू करेंगे ताकि एनीमेशन बहुत जल्दी न हो? – andrewtweber