2008-09-30 10 views
5

मैं जल्द ही एक वेबसाइट को बाहर निकालने वाला हूं और इसलिए मुझे अंतिम चरण में मिल गया है। बच्चे को अनुकूलित करने का समय! वेबसाइट 32 एफपीएस की औसत फ्रेमरेट के साथ समग्र रूप से बहुत अच्छी प्रदर्शन करती है। लेकिन कुछ भारी एनीमेशन भागों में यह कुछ फ्रेम को 22fps तक छोड़ना पसंद करता है। जो कि भयानक नहीं है। लेकिन मैं इसे यथासंभव उच्चतम गति पर चलने के लिए जितना संभव हो सके tweaking कर रहा हूँ।फ़्लैश प्रतिपादन: अनुकूलन युक्तियाँ और चाल

मैं इस बच्चे को भी चिकना चलाने के लिए कुछ सुझावों और चालों को अनदेखा कर सकता हूं।

तो इस प्रकार मैं इस धागे को खोलने के लिए जो भी निंजा चालें आपको अतीत में मदद करता हूं साझा करने के लिए खोलता हूं। मेरा एक जोड़े जो मैं अभी के बारे में सोच सकते हैं:

एनीमेशन अनुक्रमण:

के रूप में कम संभव संक्रमण एक ही समय में होने के रूप में करते हैं, एक बात यह एक ट्रांसफॉर्मर के रूप में और अधिक कार्य करने की कोशिश समय पर। एनीमेशन में गति प्राप्त करने के बाद, आप शायद अधिक प्रवाह प्राप्त कर सकते हैं।

animating रखें संभव के रूप में छोटे वस्तुओं:

तो फ्लैश एक ही समय में कम पिक्सल की गणना करने के है।

cacheAsBitmap = true:

उन बड़े movieclips, वेक्टर आकार, चारों ओर ले जाया जा रहा है शायद जल्दी ले जाया जाता है, जब वे एक बिटमैप के रूप में कैश नहीं किया जाता। उच्च फ़्रेमदर के लिए अपनी स्मृति में कुछ जगह है, लेकिन कुछ भी समय लग सकता है;

) आप का उपयोग नहीं करते सब कुछ नष्ट:

उन अप्रयुक्त movieclips सेट शून्य और फिर एक बच्चे के रूप में इसे हटाने के लिए। तो आपका कचरा कलेक्टर इसका ख्याल रखता है।

उत्तर

2

अल्फा पारदर्शिता प्रस्तुत करना गहन हो सकता है ...

मैं क्या सुना है से, चमक फिल्टर कहर यदि आप इसे एनिमेट कर रहे हैं बरपाने ​​होगा।

जहां संभव हो वहां अल्फा = 0 के बजाय दृश्यमान = झूठी उपयोग करें।

1

फ़्लैश (8 - एक्शनस्क्रिप्ट 2 या नीचे) एक क्लिप प्रस्तुत करेगा भले ही इसकी दृश्यता झूठी पर सेट हो - इसे रेंडर करने के लिए आपको इसे 'दृश्यमान' स्क्रीन (यानी x = -2000) से बाहर ले जाने की आवश्यकता है क्लिप चौड़ाई 2000 से कम है)।

+0

दिलचस्प ... हालांकि यह एक हैक जैसा लगता है, फ्लैश प्लेयर को कुछ प्रस्तुत करने के लिए मजबूर करने का कोई अन्य तरीका नहीं है? – onekidney

+0

हाँ यह थोडा बुरा है – Kasper

+0

यह मेरे पूरे अनुभव में नहीं है, मुझे पता है कि अल्फा को शून्य पर सेट करने के लिए क्लिप को प्रतिपादन रखना होगा, लेकिन मैंने हमेशा उस धारणा पर काम किया है जो उस क्लिप के लिए दृश्यमान = झूठी अक्षमता प्रस्तुत करता है। – grapefrukt

2

यदि आप स्प्राइट/मूवीक्लिप (जैसे स्केल/रोटेशन इत्यादि) के परिवर्तन को एनिमेट नहीं कर रहे हैं तो केवल cacheAsBitmap = true: का उपयोग करें, अन्यथा यह वास्तव में इसे धीमा कर देगा।

जहां वेक्टर आकार के बजाय पीएनजी का उपयोग संभव हो।

4

एक और विचार यह है कि आप किस ट्विन इंजन का उपयोग कर रहे हैं। यदि आप फ्लैश के साथ आने वाले किसी का उपयोग कर रहे हैं तो आपको शायद टिंचलाइट (कई अन्य अच्छे भी हैं) पर स्विच करके कुछ प्रदर्शन प्राप्त होगा।

ध्यान रखें कि कैशएएस बिटमैप बहुत खतरनाक हो सकता है। यदि आप क्लिप को स्केलिंग, घुमाने या अपडेट कर रहे हैं (जैसे कि इसके अंदर कुछ के अल्फा को संशोधित करना) फ्लैश को एक नया स्नैपशॉट उत्पन्न करना होगा, जो सबकुछ धीमा कर देगा।जब तक आप एक्स और वाई पर क्लिप को स्थानांतरित कर रहे हों, तब तक केवल हमेशा अच्छा होता है (यदि आपको घूमने की आवश्यकता है, इसे बंद करें और फिर जब आप पूरा कर लें तो वापस आएं)। ध्यान दें कि यदि आप फिल्टर का उपयोग कर रहे हैं cacheAsBitmap हमेशा स्वचालित रूप से -> धीमा हो सकता है।

3

चीजों को सरल रखना,

फ़्लैश ग्राफिक्स के रूप में वैक्टर (और बहुत अच्छी तरह से) बना देता है। ऑब्जेक्ट जितना अधिक जटिल होगा, उतना ही समय देने में लगेगा।

ग्राफिक्स डिस्प्ले पेड़ को ट्रैक करने का भी प्रयास करें। मंच के प्रत्येक बच्चे को अलग से प्रस्तुत किया जाना चाहिए, इसलिए यदि आपके पास 1000 बच्चे हैं तो यह चीजों को वास्तव में धीमा कर सकता है।

एक समाधान एक ऑब्जेक्ट में एक बार प्रदर्शित करने के लिए है, जैसे डिस्प्ले हैंडलर। आप अपनी 'ऑब्जेक्टनेस' खो सकते हैं लेकिन आप इसे तेजी से प्रतिपादन में बनाते हैं। एक स्प्राइट में टाइल बनाने या कई छोटे 'जोड़' बनाते समय इसे ध्यान में रखें।

2

आप मूवीक्लिप्स/स्प्राइट्स आदि की स्क्रॉलआरक्ट प्रॉपर्टी का उपयोग करना चाहेंगे ... यह मूल रूप से मास्क के रूप में कार्य करता है लेकिन बोनस के साथ आप कुछ ऑफसेट द्वारा मास्क किए गए क्लिप को स्क्रॉल कर सकते हैं।

1

बिटमैप कैशिंग केवल आपको वास्तविक रिटर्न देता है जब आप जिस डिस्प्ले ऑब्जेक्ट को कैशिंग कर रहे हैं उसके पास जटिल आंतरिक भाग होते हैं लेकिन बिना किसी बदलाव के बैठते हैं - जैसे पुलडाउन मेनू, जिसमें आंतरिक रूप से सभी प्रकार के स्किनेबल तत्व होते हैं, लेकिन केवल होने की आवश्यकता होती है इसे खोला या बंद होने पर फिर से प्रस्तुत किया जाता है। कैशिंग को चालू करने से सावधान रहें क्योंकि वस्तुएं बड़ी हैं।

2

टेक्स्ट के बड़े हिस्से, यदि वे नहीं बदलते हैं, तो अक्सर बिटमैप (या पारदर्शी पीएनजी) के साथ प्रतिस्थापित किया जा सकता है। इससे सामग्री को बनाए रखने में दर्द होता है, लेकिन इसमें महत्वपूर्ण प्रदर्शन पर प्रभाव हो सकता है। (ध्यान दें: यह मुख्य रूप से एम्बेडेड फ़ॉन्ट्स के लिए लागू होता है, विशेष रूप से एशियाई फोंट जैसे कर्क वाले, क्योंकि इस तरह के फोंट वेक्टर आकार के रूप में प्रस्तुत किए जाते हैं। डिवाइस फोंट ओएस द्वारा प्रस्तुत किए जाते हैं और बहुत कम ओवरहेड होते हैं।)

2

प्रोफ़ाइल, प्रोफ़ाइल, प्रोफ़ाइल।

यदि स्क्रिप्ट धीमी गति से चल रही हैं, तो कौन सी कक्षा, कौन सा कार्य, कौन सा लूप, कौन सा कथन आपको धीमा कर रहा है, यह जानने के लिए समय रिपोर्टों का पता लगाना शुरू करें। यदि ग्राफिकल प्रभाव आपको धीमा कर रहे हैं, तो विस्तृत समय FPS रिपोर्ट का पता लगाएं और tweaking शुरू करें। जब आप इसे या उस परत को हटाते हैं तो क्या यह तेज़ हो जाता है? या जब आप उस क्लिप को पारदर्शी नहीं बदलते हैं? और इसी तरह। इसे ठीक करने की कोशिश करने से पहले धीमा क्या है।

बस पोकिंग और रिफैक्टरिंग शायद ही कभी आपको कोई वास्तविक प्रदर्शन सुधार मिलती है।

संबंधित मुद्दे