2012-04-08 15 views
11

मैं कैनवास का उपयोग कर एक HTML5 गेम को कार्यान्वित कर रहा हूं। अब मैं कैनवास पर पूर्ण स्थिति वाले एचटीएमएल तत्वों का उपयोग करने पर टूलटिप्स, भाषणबंद, infowindows और इतने सारे पाठ ओवरले बनाने के बारे में सोच रहा हूं। तो मैं कई प्रभाव और संक्रमण CSS3 प्रस्तावों का उपयोग कर सकते हैं।मिक्सिंग कैनवास और CSS3 तत्व

लेकिन मुझे प्रदर्शन के बारे में निश्चित नहीं है। इन ओवरले को जोड़ना और निकालना बेहद जरूरी है (कुछ एमएमओआरपीजी है, इसलिए बहुत सारे भाषणबुले होंगे और इसी तरह)।

  1. डोम ट्रेवर्सल जोड़ने के लिए/निकालें:

    शायद प्रदर्शन के बारे में 2 सवाल कर रहे हैं। शायद एक कैश मदद कर सकता है?

  2. एचटीएमएल और CSS3 स्वयं।

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

कोई सलाह, राय, अनुभव?

अग्रिम धन्यवाद।

+3

डोम ट्रैवर्सल समय को आपके "महत्वपूर्ण" तत्वों के कैशिंग संदर्भों से कम किया जा सकता है; मैं अक्सर इस उद्देश्य के लिए someUniqueId => DOMElement का हैश रखता हूं। इस योजना में सहायता के लिए आईडी को आपके तत्वों पर एक डेटा- * विशेषता के रूप में संग्रहीत किया जा सकता है। कैनवास के साथ CSS3 मिश्रण करने के लिए, मैं इस रणनीति के बारे में सोच रहा हूं (+1)।परिवर्तन (कैनवास निर्देशांक -> स्क्रीन निर्देशांक) को अच्छी तरह से सारणीबद्ध करनी होगी या आप कैनवास के शीर्ष पर अपने नियमित तत्वों को कहां स्थापित करना चाहते हैं, यह जानने की कोशिश कर रहे गड़बड़ी के साथ समाप्त होने जा रहे हैं। –

उत्तर

1

उल्लेख की गई दो तकनीकों में से केवल एक का उपयोग करने पर विचार करें। हो सकता है कि आप उस एप्लिकेशन को मोबाइल या टैबलेट में रिलीज़ कर सकें। मुझे लगता है कि इन उपकरणों पर एक ही समय दोनों को संभालने में समस्या होगी। और एक और बात: यदि आप कैनवास में रहते हैं तो संगतता के बारे में कोई चिंता नहीं होगी। यह एक तकनीक नहीं बल्कि एक विचार-विस्मयकारी जवाब है।

+0

हां, मैं मानता हूं कि कम से कम रखरखाव और पोर्टेबिलिटी के संबंध में यह सबसे अच्छा है। – Ixx

0

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

1

एचटीएमएल 5 गेम में यूआई तत्वों के लिए डीओएम का उपयोग करने का सबसे अच्छा कारण ईवेंट हैंडलिंग है।

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

डीओएम तत्वों (विशेष रूप से जब jQuery जैसी लाइब्रेरी का उपयोग करते समय) यह छोटा होता है, और आप कम से कम प्रयास के साथ एक समृद्ध और इंटरैक्टिव यूआई बना सकते हैं।

एकमात्र नकारात्मक पक्ष मैं सोच सकता हूं कि आप ब्राउज़र विसंगतियों का सामना कर सकते हैं, खासकर यदि CSS3 का उपयोग करते हैं, लेकिन फिर से jQuery इसके साथ मदद करेगा।

मुझे लगता है कि एक और नकारात्मक बात यह है कि एक बार जब आप डोम रूट पर जाते हैं, तो आपका गेम हमेशा ब्राउज़र गेम बनने जा रहा है, जबकि यदि यह 100% कैनवास था, तो हमेशा कोड को दूसरी भाषा में पोर्ट करने की संभावना होगी और इसे मूल बनाते हुए, लेकिन मुझे लगता है कि कुछ लोगों के लिए केवल नकारात्मक ही होगा।

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