2012-03-04 11 views
28

this space shooter demo देखें।स्क्रिरा ने एचटीएमएल 5 ऑडियो को कन्स्ट्रक्ट 2 में कैसे परिपूर्ण किया?

एचटीएमएल 5 ऑडियो क्रोम 18 और फ़ायरफ़ॉक्स 10 पर सही है। ध्वनि बजाने में कोई अंतराल नहीं है और प्रत्येक नमूना पूरी तरह से खेलता है। आखिरी बार मैंने एचटीएमएल 5 ऑडियो और जावास्क्रिप्ट का उपयोग करके ध्वनि चलाने की कोशिश की, मुझे एक से अधिक बार खेलने के लिए ध्वनि नहीं मिली।

यह इतना सही बनाने के लिए सिरी क्या कर रहा है?

+10

यहां सिमरा से टॉम, मैं देखता हूं कि क्या मैं जल्द ही आपके लिए एशले को जवाब दे सकता हूं! –

उत्तर

82

मैं निर्माण 2 के डेवलपर हूँ, इसलिए मुझे आशा है कि मैं पर्याप्त रूप से अपने प्रश्न :) जवाब देने के लिए

HTML5 ऑडियो वास्तव में एक गड़बड़ है योग्य हूँ, इसलिए मैं कोशिश करते हैं और बनाने के लिए काफी हद तक चले गए हैं यह निर्माण 2 में बुलेटप्रूफ यहाँ मैं क्या किया है की एक रूपरेखा है:

वेब ऑडियो API

HTML5 ऑडियो स्ट्रीमिंग संगीत के लिए बनाया गया प्रतीत होता है का उपयोग करें, तो एक HTML5 ऑडियो वस्तु एक दिग्गज वस्तु की तरह है । स्पेस ब्लस्टर की तरह 10 ध्वनि बजाना एक सेकंड लगता है जो ब्राउज़र को आसानी से जब्त कर सकता है। दूसरी तरफ, वेब ऑडियो एपीआई रूटिंग, इफेक्ट्स और हल्के ध्वनि प्लेबैक के साथ एक उच्च-प्रदर्शन ऑडियो इंजन है। यह खेल के लिए एकदम सही है। ऑडियो बफर और ऑडियो प्लेबैक अलग हो जाते हैं, इसलिए आपके पास एक डेटा बफर हो सकता है और इसे कई बार कुशलता से चला सकता है, जबकि कुछ ब्राउज़र इतने खराब होते हैं कि यदि आप एक HTML5 ध्वनि चलाते हैं तो यह हर बार इसे फिर से डाउनलोड करता है! चूंकि इसे वास्तव में गेम और इस तरह के लिए डिजाइन किया गया था, इसलिए आप खुशी से युग के लिए ध्वनि की आवाज वापस खेल सकते हैं और यह अभी भी अच्छी तरह से हंस जाएगा। यह एक ध्वनि स्रोत के रूप में एचटीएमएल 5 ऑडियो का भी उपयोग कर सकता है, हालांकि मैं केवल उन चीज़ों के लिए एचटीएमएल 5 ऑडियो का उपयोग करता हूं जिन्हें उपयोगकर्ता ने संगीत ट्रैक के रूप में नामित किया है (क्योंकि वह जगह है जहां आप स्ट्रीमिंग करना पसंद करते हैं - आमतौर पर वेब ऑडियो एपीआई में बाकी सब कुछ पूरी तरह से डाउनलोड हो जाता है खेल रहे हैं)।

वेब ऑडियो एपीआई क्रोम में समर्थित है, इसे आईओएस 6+ में भी बनाया गया है (हालांकि जब तक आप टच इवेंट में कुछ ऑडियो चलाने की कोशिश नहीं करते हैं तब तक यह म्यूट हो जाता है), फ़ायरफ़ॉक्स समर्थन पर काम कर रहा है, और यह आना चाहिए जल्द ही एंड्रॉइड के लिए क्रोम पर। तो इन प्लेटफार्मों पर ऑडियो काफी विश्वसनीय होगा।

HTML5Rocks और the proposed spec पर अधिक जानकारी - आपको अब के लिए प्रलेखन के रूप में spec का उपयोग करना होगा, वहां और कुछ नहीं है।

अन्य ब्राउज़र: एक ऑडियो रीसाइक्लिंग प्रणाली

वेब ऑडियो API अभी तक, हर जगह समर्थित नहीं है विशेष रूप से आईई, जिसका अर्थ है आप अभी भी कुछ है कि के लिए खेल के लिए काम कर सकते हैं करने के लिए HTML5 ऑडियो लोहदंड की जरूरत को लागू पिछेड़ी संगतता। ऐसा करने का तरीका ऑडियो ऑब्जेक्ट्स रीसायकल करना है।

अंतरिक्ष विस्फोटक में खिलाड़ी का लेजर एक बार 10 गुना आग लगाता है - और इसमें कोई अन्य ध्वनि प्रभाव शामिल नहीं है! जैसा कि मैंने पहले उल्लेख किया था, ऑडियो एक हेवीवेट ऑब्जेक्ट की तरह है, इसलिए यदि आप new Audio() एक बार दूसरी बार 10+ कर रहे हैं, तो देखो और देखें, ब्राउज़र अंततः मर जाता है और ऑडियो गड़बड़ शुरू हो जाता है। हालांकि, आप उन्हें पुनर्नवीनीकरण द्वारा बनाई गई ऑडियो ऑब्जेक्ट्स की संख्या को बहुत कम कर सकते हैं।

असल में, प्रत्येक ध्वनि प्रभाव के लिए, स्रोत के रूप में उस ध्वनि के साथ बनाए गए प्रत्येक ऑडियो ऑब्जेक्ट का कैश रखें। फिर, जब कोई नई आवाज बजती है, तो किसी भी ध्वनि प्रभाव के लिए कैश को खोजें जो खेलना समाप्त हो गया है (ended संपत्ति सत्य होगी)। यदि आपको कोई मिलता है, तो इसे फिर से शुरू करें (currentTime = 0) और play() फिर से। अन्यथा, कैश में new Audio() ऑब्जेक्ट बनाएं।

चूंकि खिलाड़ी के लेजर ध्वनि प्रभाव एक मिनट में 600 ऑडियो ऑब्जेक्ट्स बनाने के बजाय छोटा होता है, तो केवल 3 या 4 होगा जो यह साइकिल चलाना दौर रखता है। दुर्भाग्यवश कुछ ब्राउज़र अभी भी इसे 4 बार डाउनलोड करेंगे (सफारी ने आखिरी बार चेक किया था!) ​​या उच्च विलंबता पहले समय प्रत्येक ध्वनि बफर खेला जाता है, लेकिन आखिरकार ब्राउजर पकड़ता है क्योंकि उसी बफर का हमेशा उपयोग किया जा रहा है। तो मूल रूप से ध्वनि कुछ क्षणों के लिए थोड़ा अजीब हो सकता है, तो यह साफ़ हो जाता है। हम एचटीएमएल 5 एप कैश का भी उपयोग करते हैं, अगली बार जब आप डिस्क से सबकुछ लोड करते हैं, तो बाद के नाटकों को तुरंत अच्छा प्रदर्शन करना चाहिए।

यह मूल रूप से यह है। यह अभी भी एचटीएमएल 5 ऑडियो के साथ पहले नाटक पर थोड़ी सी डोडी है, लेकिन इसके बाद हर बार काफी ठोस होना चाहिए जिससे ब्राउज़र में एक सायन ऑडियो कार्यान्वयन हो। ऑडियो ऑब्जेक्ट्स क्लोन करने का प्रयास करने के कई तरीके हैं, लेकिन मुझे पता चला है कि मौजूदा ऑडियो रीवाइंडिंग सबसे अच्छा काम करता है।

कोई ध्वनि प्रबंधक या कोई फ्लैश/प्लगइन-आधारित फ़ॉलबैक नहीं है क्योंकि हम शुद्ध HTML5 होने का एक बिंदु बनाते हैं।

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

यही है। मुझे लगता है कि हमारे प्रतिद्वंद्वियों को यह पढ़ा जाएगा, लेकिन जब कोई एसपी प्रतिनिधि होता है तो कौन परवाह करता है ??? !!! 1111

+9

मैं एक वेब देव नहीं हूं, लेकिन मैंने ट्विटर से यह यूआरएल देखा, और मुझे तकनीक और ढांचे के बारे में पढ़ना अच्छा लगता है। संक्षेप में कहा: +1 – SynerCoder

+7

शानदार जवाब। धन्यवाद! मैं अनुमान लगा रहा हूं, चूंकि आप चाहते हैं कि लोग निर्माण 2 का उपयोग करें, आप इस घटक को स्टैंड-अलोन लाइब्रेरी के रूप में जारी करने की योजना नहीं बना रहे हैं ... –

+8

वैसे हकीकत यह है कि हम पहले से ही हमारे स्टार्टअप पर घड़ी के दौरान काम कर रहे हैं, इसलिए हमारे पास समय नहीं है, और जैसा कि आप कहते हैं कि यह हमारे इंजन को थोड़ा विचलित कर देगा ... हालांकि मैं किसी भी नए ओपन सोर्स इंजन के आधार के रूप में अपनी पोस्ट का उपयोग करने के लिए पूरी तरह से खुश हूं! – AshleysBrain

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