विषयसूची:

डिजाइनर के लिए दिलचस्प प्रोसेसिंग प्रोग्रामिंग गाइडेंस--मीडिया लोडिंग और इवेंट: 13 कदम
डिजाइनर के लिए दिलचस्प प्रोसेसिंग प्रोग्रामिंग गाइडेंस--मीडिया लोडिंग और इवेंट: 13 कदम

वीडियो: डिजाइनर के लिए दिलचस्प प्रोसेसिंग प्रोग्रामिंग गाइडेंस--मीडिया लोडिंग और इवेंट: 13 कदम

वीडियो: डिजाइनर के लिए दिलचस्प प्रोसेसिंग प्रोग्रामिंग गाइडेंस--मीडिया लोडिंग और इवेंट: 13 कदम
वीडियो: Auditon से Slection तक K-pop Idol बनने का Full Step by Step Process 🇮🇳 How to become K-pop Idol 🇰🇷 2024, जून
Anonim
डिजाइनर के लिए दिलचस्प प्रसंस्करण प्रोग्रामिंग मार्गदर्शन--मीडिया लोड हो रहा है और घटना
डिजाइनर के लिए दिलचस्प प्रसंस्करण प्रोग्रामिंग मार्गदर्शन--मीडिया लोड हो रहा है और घटना

प्रसंस्करण बहुत सारे बाहरी डेटा को लोड किया जा सकता है, जिनमें से तीन प्रकार बहुत सामान्य रूप से उपयोग किए जाते हैं। वे छवि, ऑडियो और वीडियो अलग-अलग हैं।

इस अध्याय में, हम इस बारे में बात करने जा रहे हैं कि घटनाओं के साथ संयोजन में ऑडियो और वीडियो को कैसे लोड किया जाए। अंत में, आप अपना खुद का संगीत कीबोर्ड या संगीत पैलेट बना सकते हैं।

चरण 1: छवि पढ़ें

शुरू करने से पहले, आइए छवि लोड करने की विधि पर एक नज़र डालते हैं।

चरण 2: छवि संबंधित कार्य

इन कार्यों का उपयोग करने से पहले, हमें PImage के माध्यम से एक छवि वस्तु बनाने की आवश्यकता है। फिर हम इन कार्यों का उपयोग सभी प्रकार की छवि गुणों को परिभाषित करने के लिए कर सकते हैं।

अपना प्रोग्राम चलाने से पहले अपने छवि स्रोतों को डेटा फ़ाइल में संग्रहीत करना न भूलें।

चरण 3: संगीत लोड हो रहा है, चलाएं और रोकें

निम्नलिखित में, हम औपचारिक रूप से आपके लिए संगीत के आह्वान का परिचय देना शुरू करते हैं। छवि लोडिंग के समान ही, आपको शुरुआत में एक ऑडियो ऑब्जेक्ट घोषित करना होगा। आप वास्तविक व्याकरण के लिए नीचे दिए गए उदाहरण का उल्लेख कर सकते हैं।

कोड उदाहरण (10-1):

[सीसीईएन_सीपीपी थीम = "डॉन"] आयात प्रसंस्करण। ध्वनि। *;

ध्वनि फ़ाइल ध्वनि;

व्यर्थ व्यवस्था() {

आकार (640, 360);

पृष्ठभूमि (255);

ध्वनि = नया साउंडफाइल (यह, "1.mp3");

}

शून्य ड्रा () {

}

शून्य कुंजी दबाया () {

//ध्वनि खेलने

अगर (कुंजी == 'पी') {

ध्वनि। प्ले ();

}

// ध्वनि बंद करो

अगर (कुंजी == 'एस') {

ध्वनि.स्टॉप ();

}

} [/cceN_cpp]

तैयारी:

स्वयं प्रसंस्करण में कोई ध्वनि पुस्तकालय नहीं होता है। आपको इसे स्वयं डाउनलोड करना होगा। इसलिए, अपना कोड लिखने से पहले, बेहतर होगा कि आप निम्नलिखित तैयारी करें।

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

हालाँकि, यदि हम अपने घरेलू देश (चीन में) में इस फ़ंक्शन का उपयोग करते हैं, तो हम इसे सीधे वेब से कनेक्ट करके डाउनलोड नहीं कर सकते। हमें वीपीएन स्टार्टअप करना होगा। भले ही हम इसे शुरू कर दें, लेकिन अस्थिर स्थितियां होंगी। इसलिए आपको इसे कई बार आजमाने के लिए धैर्य रखना होगा। यह लोडिंग का सबसे सुविधाजनक तरीका है। यदि आप इंस्टॉल नहीं कर सकते हैं, तो आपको आधिकारिक वेबसाइट से मैन्युअल रूप से डाउनलोड करना होगा। (https://processing.org/reference/libraries/) क्योंकि मैन्युअल इंस्टालेशन विधि बहुत जटिल है, हम दूसरे अध्याय में इसकी चर्चा करेंगे।

कोड व्याख्या:

तैयारी पूरी होने के बाद साउंड लाइब्रेरी ठीक से काम कर सकती है। उपरोक्त कोड को कॉपी करें, RUN पर क्लिक करें, फिर यह काम करेगा। संगीत चलाने के लिए "पी" कुंजी दबाएं, संगीत बंद करने के लिए "एस" दबाएं।

यदि इसका उपयोग प्रोग्राम के लिए किया जाता है, तो हमें इसे पहले लोड करना होगा। शुरुआत में, हमें "import processing.sound.*" एक वाक्य जोड़ना होगा। "आयात" कुंजी शब्द है, जिसका शाब्दिक अर्थ है लोड करना। "आयात" के पीछे पुस्तकालय का नाम जोड़ें, फिर यह पुस्तकालय को लोड करेगा। पूंछ आमतौर पर "*" के निशान का अनुसरण करती है, इस प्रकार यह पुस्तकालय से संबंधित सभी कक्षाओं को एक-एक करके मैन्युअल रूप से जोड़े बिना कार्यक्रम में लोड कर देगा।

दूसरे वाक्य में, "साउंडफाइल साउंड;" ने एक ऑडियो ऑब्जेक्ट घोषित किया है। साउंडफाइल PImage के समान है।

फ़ंक्शन सेटअप के भीतर, "ध्वनि = नया साउंडफाइल (यह, "1.mp3"); " का उपयोग ऑब्जेक्ट बनाने और इसके पढ़ने के पथ को परिभाषित करने के लिए किया जाता है। यहां हमने वास्तव में एक नई अवधारणा कक्षा का उपयोग करना शुरू कर दिया है। अभी हम इस पर गहराई से चर्चा नहीं करते हैं। हमें केवल यह जानने की जरूरत है कि यह एक निश्चित लेखन विधि है और अंतिम पैरामीटर संगीत स्रोत का पता भरने के लिए है।

keyPressed() ईवेंट में, " sound.play() " और " sound.stop() " प्ले और स्टॉप के प्रभाव के रूप में अपेक्षाकृत काम करते हैं। "।" बीच में एक सदस्य फ़ंक्शन को इंगित करता है जो ऑडियो ऑब्जेक्ट से संबंधित है और रुकता है। हम सदस्य फ़ंक्शन को ऑब्जेक्ट में शामिल फ़ंक्शन के रूप में मान सकते हैं। यह इस वस्तु से संबंधित है, जिसे पहले से परिभाषित किया गया है। बाद में, जब हमें कई ऑडियो ऑब्जेक्ट चलाने की आवश्यकता होती है, तो हमें केवल सापेक्ष चर नाम के पीछे ".play ()" जोड़ना होगा।

ऑडियो स्रोतों को स्कैचफाइल (पीडीई प्रत्यय के साथ) की एक ही सूची के तहत डेटा फ़ाइल में संग्रहीत किया जाएगा। यदि कोई नहीं है, तो आप मैन्युअल रूप से एक बना सकते हैं।

फंक्शन ड्रा लिखना न भूलें। यद्यपि आपने कोई ग्राफ़िक्स नहीं बनाया है, संगीत को सफलतापूर्वक चलाना आवश्यक है।

उपरोक्त प्रक्रिया काफी जटिल लगती है, लेकिन आपको केवल कोड के कई वाक्य जोड़ने की जरूरत है, तभी आप प्ले फंक्शन को महसूस कर सकते हैं। यह बहुत सुविधाजनक है।

प्रसंस्करण सामान्य ऑडियो प्रारूपों जैसे mp3, wav, ogg, आदि का समर्थन करता है।

चरण 4: संगीत गति नियंत्रण

निम्नलिखित उदाहरण बहुत दिलचस्प होने लगेंगे। प्रसंस्करण ने कुछ कार्य प्रदान किए हैं जो संगीत चलाने की गति को नियंत्रित कर सकते हैं। वहीं, म्यूजिक प्ले करने की स्पीड के साथ टोन बदल जाएंगे। जब हम माउस को नियंत्रित करने के लिए उपयोग करते हैं, तो यह बहुत ही साइकेडेलिक प्रभाव उत्पन्न करेगा।

वीडियो वेबसाइट:

कोड उदाहरण (10-2):

[सीसीईएन_सीपीपी थीम = "डॉन"] आयात प्रसंस्करण। ध्वनि। *;

ध्वनि फ़ाइल ध्वनि;

व्यर्थ व्यवस्था() {

आकार (640, 360);

पृष्ठभूमि (255);

ध्वनि = नया साउंडफाइल (यह, "1.mp3");

}

शून्य ड्रा () {

फ्लोट स्पीड = माउसएक्स/(फ्लोट) चौड़ाई * 3;

ध्वनि। दर (गति);

फ्लोट वॉल्यूम = माउसवाई/(फ्लोट) ऊंचाई * 4;

ध्वनि.amp (वॉल्यूम);

}

शून्य कुंजी दबाया () {

//ध्वनि खेलने

अगर (कुंजी == 'पी') {

ध्वनि। प्ले ();

}

// ध्वनि बंद करो

अगर (कुंजी == 'एस') {

ध्वनि.स्टॉप ();

}

} [/cceN_cpp]

कोड समझाएं:

फ़ंक्शन.rate () ऑडियो चलाने की गति को नियंत्रित करता है। कोष्ठक में मान खेलने की गति के तेज और धीमे को निर्धारित करता है। जब मान 1 होता है, तो खेलने की गति सामान्य होती है। जब यह 1 से आगे हो जाए, तब त्वरित करें; जबकि यह 1 से कम है, फिर धीमा करें।

फ़ंक्शन.amp () ऑडियो वॉल्यूम को नियंत्रित करता है। कोष्ठक में मान वॉल्यूम मान निर्धारित करता है। जब यह 1 होता है, तो वॉल्यूम मान सामान्य होता है। जब यह 1 से अधिक हो, तो मात्रा बढ़ाएँ; जबकि यह 1 से कम है, तो वॉल्यूम घटाएं।

यहां हमने दो स्थानीय चर गति और वॉल्यूम को पैरामीटर के रूप में लोड किया है। इसलिए माउस का हॉरिजॉन्टल कोऑर्डिनेट म्यूजिक टोन को बदल देगा, और वर्टिकल कोऑर्डिनेट म्यूजिक वॉल्यूम को बदल देगा।

चरण 5: वीडियो चलाएं और रोकें

प्रसंस्करण में, वीडियो लोडिंग ऑडियो लोडिंग के समान है। आपको सबसे पहले वीडियो लाइब्रेरी डाउनलोड करनी होगी। (https://processing.org/reference/libraries/video/index.html)

कोड उदाहरण (10-3):

[सीसीईएन_सीपीपी थीम = "डॉन"] आयात प्रसंस्करण.वीडियो।*;

मूवी मूव;

व्यर्थ व्यवस्था() {

आकार (640, 360);

पृष्ठभूमि (0);

mov = नई मूवी (यह, "1.mov");

}

शून्य मूवीइवेंट (मूवी मूवी) {

mov.read ();

}

शून्य ड्रा () {

छवि (मोव, 0, 0, 640, 360);

}

शून्य कुंजी दबाया () {

अगर (कुंजी == 'पी') {

mov.play ();

}

अगर (कुंजी == 'एस') {

mov.stop ();

}

अगर (कुंजी == 'डी') {

mov.रोकें ();

}

} [/cceN_cpp]

वीडियो स्क्रीनशॉट:

कोड समझाएं:

वीडियो लाइब्रेरी लोड करने के लिए पहला वाक्य "आयात प्रसंस्करण.वीडियो।*;" का उपयोग किया जाता है।

दूसरा वाक्य " Movie mov; " वीडियो ऑब्जेक्ट घोषित करने के लिए प्रयोग किया जाता है। इसमें "मूवी" का कार्य PImage के समान है।

फ़ंक्शन सेटअप में, " mov = new Movie(this, "1.mov"); " का प्रभाव वस्तु बनाना और उसके पढ़ने के पथ को परिभाषित करना है। अंतिम पैरामीटर वीडियो स्रोत के पते से भरा जाएगा।

सेटअप के पीछे, MovieEvent वीडियो ईवेंट का प्रतिनिधित्व करता है। इसका उपयोग वीडियो जानकारी को अपडेट करने और पढ़ने के लिए किया जाता है। घटना में "mov.read ()" का अर्थ है पढ़ना।

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

फंक्शन.play() का अर्थ है खेलना। फंक्शन.stop() का मतलब है स्टॉप, और यह वीडियो को रीसेट कर देगा। फंक्शन। पॉज़ () का मतलब पॉज़ है। यह वर्तमान खेल को बाधित करेगा, जो तब तक जारी रहेगा जब तक कि फ़ंक्शन.play () लागू नहीं हो जाता।

चरण 6: वीडियो गति नियंत्रण

कोड उदाहरण (10-4):

[सीसीईएन_सीपीपी थीम = "डॉन"] आयात प्रसंस्करण। वीडियो। *;

मूवी मूव;

व्यर्थ व्यवस्था() {

आकार (640, 360);

पृष्ठभूमि (0);

mov = नई मूवी (यह, "transit.mov");

}

शून्य मूवीइवेंट (मूवी मूवी) {

mov.read ();

}

शून्य ड्रा () {

छवि (मोव, 0, 0, चौड़ाई, ऊंचाई);

फ्लोट न्यूस्पीड = माउसएक्स/(फ्लोट) चौड़ाई * 4;

मूव स्पीड (न्यूस्पीड);

}

शून्य कुंजी दबाया () {

अगर (कुंजी == 'पी') {

mov.play ();

}

अगर (कुंजी == 'एस') {

mov.stop ();

}

अगर (कुंजी == 'डी') {

mov.रोकें ();

}

}

[/cceN_cpp]

कोड समझाएं:

वीडियो चलाने की गति को नियंत्रित करने के लिए फ़ंक्शन.गति () का उपयोग किया जा सकता है। जब पैरामीटर मान 1 होता है, तो खेलने की गति सामान्य होती है। जब 1 से अधिक का मान हो, तो त्वरित करें; जबकि यह 1 से कम है, फिर गति कम करें।

क्योंकि हमने स्थानीय चर newSpeed बनाया है और इसे फ़ंक्शन सेटस्पीड () में आयात किया है, माउस का समन्वय सीधे वीडियो चलाने की गति को प्रभावित करेगा।

वीडियो के बारे में अधिक उदाहरणों के लिए, आप लाइब्रेरी - वीडियो केस लाइब्रेरी में देख सकते हैं।

चरण 7: सामान्य घटनाओं को संसाधित करना

पहले, हमने केवल keyPressed() ईवेंट पेश किया है। कीबोर्ड दबाने के बाद यह चालू हो जाएगा। निम्नलिखित में, हम आपके लिए प्रसंस्करण में अन्य सामान्य घटनाओं का परिचय देंगे।

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

घटना प्रवाह

हम घटनाओं के निष्पादन क्रम को जानने के लिए एक उदाहरण का उपयोग कर सकते हैं।

कोड उदाहरण (10-5):

[cceN_cpp विषय = "सुबह"] शून्य सेटअप () {

फ्रेमरेट(2);

प्रिंट्लन(1);

}

शून्य ड्रा () {

प्रिंट्लन(2);

}

शून्य माउस दबाया () {

प्रिंट्लन(3);

}

शून्य माउस ले जाया गया () {

प्रिंट्लन(4);

}

शून्य माउस जारी किया गया () {

प्रिंट्लन(५);

}

शून्य कुंजी दबाया () {

प्रिंट्लन (6);

}

शून्य कुंजी जारी () {

प्रिंट्लन(7);

} [/cceN_cpp]

कोड समझाएं:

फंक्शन सेटअप में, फंक्शन फ्रेमरेट () ने प्रोग्राम की ऑपरेट स्पीड रेट 2 फ्रेम प्रति सेकेंड पर सेट की है। फ़्रेम दर को कम करने से हमें कंसोल में आउटपुट का निरीक्षण करने में मदद मिल सकती है यदि ट्रिगर होने वाली घटनाओं को तुरंत नए डेटा द्वारा पीछे की ओर ब्रश किया जाएगा।

अपने माउस को हिलाने की कोशिश करें, माउस क्लिक करें, माउस छोड़ें और आउटपुट परिणाम देखें। Println के माध्यम से घटना निष्पादन आदेश को जानें।

ध्यान देने योग्य बात यह है कि ड्रॉइंग फंक्शन को फंक्शन ड्रा को छोड़कर अन्य घटनाओं में नहीं लिखा जा सकता है, या यह प्रदर्शित नहीं हो सकता है। यदि हम keyPressed जैसी घटनाओं के माध्यम से ग्राफिक घटकों के छिपाने और प्रदर्शन को नियंत्रित करना चाहते हैं, तो हम बूल वैरिएबल को माध्यम बनाने पर विचार कर सकते हैं।

घटनाक्रम क्रम में निष्पादित होंगे। वर्तमान घटना में सभी कोड लागू होने के बाद ही, यह अगले घटना में कोड निष्पादित करेगा।

चरण 8: व्यापक उदाहरण - संगीत कीबोर्ड

नई समझी गई घटनाओं के संयोजन से, हम अपने कार्यक्रम में नए इंटरैक्शन जोड़ सकते हैं। अगला, केवल कुछ ही मिनटों में, हम एक संगीत कीबोर्ड को आसानी से एनालॉग कर सकते हैं।

वीडियो वेबसाइट:

कोड उदाहरण (10-6):

[सीसीईएन_सीपीपी थीम = "डॉन"] आयात प्रसंस्करण। ध्वनि। *;

साउंडफाइल साउंड1, साउंड2, साउंड3, साउंड4, साउंड5;

बूलियन की1, की2, की3, की4, की5;

व्यर्थ व्यवस्था() {

आकार (640, 360);

पृष्ठभूमि (255);

नोस्ट्रोक ();

साउंड 1 = नया साउंडफाइल (यह, "do.wav");

साउंड 2 = नया साउंडफाइल (यह, "re.wav");

साउंड 3 = नया साउंडफाइल (यह, "mi.wav");

साउंड 4 = नया साउंडफाइल (यह, "fa.wav");

साउंड 5 = नया साउंडफाइल (यह, "सो.वाव");

}

शून्य ड्रा () {

पृष्ठभूमि (255, 214, 79);

रेक्टमोड (केंद्र);

फ्लोट डब्ल्यू = चौड़ाई * 0.1;

फ्लोट एच = ऊंचाई * 0.8;

अगर (कुंजी 1) {

भरें (255);

} अन्यथा {

भरें (238, 145, 117);

}

रेक्ट (चौड़ाई/6, ऊंचाई/2, डब्ल्यू, एच);

अगर (कुंजी 2) {

भरें (255);

} अन्यथा {

भरें (246, 96, 100);

}

रेक्ट (चौड़ाई / 6 * 2, ऊंचाई / 2, डब्ल्यू, एच);

अगर (कुंजी 3) {

भरें (255);

} अन्यथा {

भरें (214, 86, 113);

}

रेक्ट (चौड़ाई / 6 * 3, ऊंचाई / 2, डब्ल्यू, एच);

अगर (कुंजी 4) {

भरें (255);

} अन्यथा {

भरें(१२४, ६०, १३१);

}

रेक्ट (चौड़ाई / 6 * 4, ऊंचाई / 2, डब्ल्यू, एच);

अगर (कुंजी 5) {

भरें (255);

} अन्यथा {

भरें (१०७, २७, १५७);

}

रेक्ट (चौड़ाई / 6 * 5, ऊंचाई / 2, डब्ल्यू, एच);

}

शून्य कुंजी दबाया () {

अगर (कुंजी == 'ए') {

ध्वनि १.प्ले ();

key1 = सच;

}

अगर (कुंजी == 'एस') {

ध्वनि २.प्ले ();

key2 = सच;

}

अगर (कुंजी == 'डी') {

साउंड3.प्ले ();

key3 = सच;

}

अगर (कुंजी == 'एफ') {

साउंड4.प्ले ();

key4 = सच;

}

अगर (कुंजी == 'जी') {

साउंड5.प्ले ();

key5 = सच;

}

}

शून्य कुंजी जारी () {

अगर (कुंजी == 'ए') {

key1 = झूठा;

}

अगर (कुंजी == 'एस') {

key2 = झूठा;

}

अगर (कुंजी == 'डी') {

key3 = झूठा;

}

अगर (कुंजी == 'एफ') {

key4 = झूठा;

}

अगर (कुंजी == 'जी') {

key5 = झूठा;

}

} [/cceN_cpp]

कोड समझाएं:

सापेक्ष ध्वनि जानकारी को पढ़ने के लिए हमें कई ऑडियो ऑब्जेक्ट बनाने की आवश्यकता होती है ताकि अलग-अलग कुंजियों के ट्रिगर होने पर अलग-अलग ध्वनियाँ बज सकें।

यहां हम एक नई ईवेंट keyReleased() का उपयोग करते हैं। इस ईवेंट का कार्य कीबोर्ड के रंग को उसके मूल रंग में पुनर्स्थापित करना है। कुंजी जारी करते समय, इसे ट्रिगर किया जाएगा।

सिर में घोषित 5 बूलियन मान कुंजी की स्थिति का पता लगाने के लिए उपयोग किए जाते हैं।

चरण 9: व्यापक उदाहरण - संगीत पैलेट 1

कीबोर्ड इवेंट के अलावा, माउस इवेंट एक अच्छी बात है कि हमें इसे लचीले ढंग से इस्तेमाल करना होगा। निम्नलिखित उदाहरण हमारे लिए एक संगीत पैलेट बनाने के लिए है, जिसके बीच हमने माउस से संबंधित दो घटनाओं का उपयोग किया है।

वीडियो वेबसाइट:

कोड उदाहरण (10-7):

[सीसीईएन_सीपीपी थीम = "डॉन"] आयात प्रसंस्करण। ध्वनि। *;

साउंडफाइल साउंड1, साउंड2, साउंड3, साउंड4, साउंड5;

बूलियन खींच रहा है;

व्यर्थ व्यवस्था() {

आकार (640, 360);

पृष्ठभूमि (255, 214, 79);

नोस्ट्रोक ();

साउंड 1 = नया साउंडफाइल (यह, "do.wav");

साउंड 2 = नया साउंडफाइल (यह, "re.wav");

साउंड 3 = नया साउंडफाइल (यह, "mi.wav");

साउंड 4 = नया साउंडफाइल (यह, "fa.wav");

साउंड 5 = नया साउंडफाइल (यह, "सो.वाव");

}

शून्य ड्रा () {

अगर (ड्रैगिंग कर रहा है) {

भरें (107, 27, 157, 100);

अंडाकार (माउसएक्स, माउसवाई, 16, 16);

}

}

शून्य माउस ड्रैग () {

खींच रहा है = सच;

अगर (माउसएक्स> १०० && माउसएक्स <१०५) {

ध्वनि १.प्ले ();

}

अगर (माउसएक्स> 200 && माउसएक्स <205) {

ध्वनि २.प्ले ();

}

अगर (माउसएक्स> ३०० && माउसएक्स <३०५) {

साउंड3.प्ले ();

}

अगर (माउसएक्स> ४०० && माउसएक्स <४०५) {

साउंड4.प्ले ();

}

अगर (माउसएक्स> ५०० && माउसएक्स <५०५) {

साउंड5.प्ले ();

}

}

शून्य माउस जारी किया गया () {

खींच रहा है = झूठा;

} [/cceN_cpp]

कोड समझाएं:

हम आशा करते हैं कि जब हमने माउस को दबाया होगा और उसे खींचा होगा, तभी हम चित्र बना पाएंगे। इसलिए हमें वर्तमान स्थिति प्राप्त करने के लिए एक बूलियन वैरिएबल isDraging बनाने की आवश्यकता है।

माउस खींचते समय, ड्रैगिंग सही मान बन जाता है ताकि ड्रा के भीतर ड्राइंग फ़ंक्शन निष्पादित हो जाएं। यह स्क्रीन पर निशान छोड़ देगा। जब हम माउस छोड़ते हैं, तो ड्रैगिंग गलत मान बन जाता है। तो फ़ंक्शन ड्रा में आरेखण कार्य निष्पादन बंद कर देंगे।

हमने माउस ड्रैगिंग इवेंट में कई ट्रिगरिंग स्थितियां तैयार की हैं। उदाहरण के लिए, जब माउस का हॉरिजॉन्टल कोऑर्डिनेट 100 और 105 पिक्सल के बीच होता है, तो म्यूजिक अपने आप प्ले हो जाएगा। यह स्क्रीन को कई अदृश्य तार बनाता है। केवल अगर माउस कुछ क्षेत्रों से गुजरता है, तो यह सापेक्ष संगीत को ट्रिगर करेगा।

चरण 10: व्यापक उदाहरण - संगीत पैलेट 2 (अद्यतित संस्करण)

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

आप नीचे दिए गए लिंक में वीडियो देख सकते हैं:

v.qq.com/x/page/w03226o4y4l.html

कोड उदाहरण (10-8):

[सीसीईएन_सीपीपी थीम = "डॉन"] आयात प्रसंस्करण। ध्वनि। *;

साउंडफाइल साउंड1, साउंड2, साउंड3, साउंड4, साउंड5;

बूलियन खींच रहा है;

व्यर्थ व्यवस्था() {

आकार (640, 360);

पृष्ठभूमि (255, 214, 79);

नोस्ट्रोक ();

साउंड 1 = नया साउंडफाइल (यह, "do.wav");

साउंड 2 = नया साउंडफाइल (यह, "re.wav");

साउंड 3 = नया साउंडफाइल (यह, "mi.wav");

साउंड 4 = नया साउंडफाइल (यह, "fa.wav");

साउंड 5 = नया साउंडफाइल (यह, "सो.वाव");

}

शून्य ड्रा () {

अगर (ड्रैगिंग कर रहा है) {

स्ट्रोक (१०७, २७, १५७, १००);

स्ट्रोकवेट (10);

लाइन (माउसएक्स, माउसवाई, पीमाउसएक्स, पीमाउसवाई);

}

}

शून्य माउस ड्रैग () {

खींच रहा है = सच;

अगर ((माउसएक्स - १००) * (pmouseX - १००) < ०) {

ध्वनि १.प्ले ();

}

अगर ((माउसएक्स - 200) * (pmouseX - 200) <0) {

ध्वनि २.प्ले ();

}

अगर ((माउसएक्स - 300) * (पीमाउसएक्स - 300) <0) {

साउंड3.प्ले ();

}

अगर ((माउसएक्स - 400) * (पीमाउसएक्स - 400) <0) {

साउंड4.प्ले ();

}

अगर ((माउसएक्स - 500) * (पीमाउसएक्स - 500) <0) {

साउंड5.प्ले ();

}

}

शून्य माउस जारी किया गया () {

खींच रहा है = झूठा;

} [/cceN_cpp]

कोड समझाएं:

यहां हमने प्रोसेसिंग सिस्टम में ही किए गए दो वेरिएबल्स pmouseX और pmouseY का उपयोग किया है। वे माउसएक्स और माउसवाई के समान हैं लेकिन उन्होंने जो प्राप्त किया वह अंतिम फ्रेम में माउस का समन्वय है।

फ़ंक्शन ड्रा में, हमने मूल फ़ंक्शन दीर्घवृत्त () को बदलने के लिए फ़ंक्शन लाइन () का उपयोग किया है। यह सीधे वर्तमान फ्रेम के समन्वय से जुड़े अंतिम फ्रेम के समन्वय को बनाता है। इसलिए हम सुसंगत सीधी रेखाएँ या वक्र बना सकते हैं।

माउस ड्रैग की घटना में, हमने एक नई ट्रिगरिंग स्थिति तैयार की है।यह जानने के लिए कि क्या एक निश्चित समन्वय पार किया गया है या नहीं, यह जानने के लिए कि अंतिम फ्रेम और वर्तमान फ्रेम का समन्वय एक ही पक्ष में है या नहीं। इस स्थिति को एक उदाहरण के रूप में लें: "अगर ((माउसएक्स - 100) * (pmouseX - 100) <0)"। इसके बीच, "माउसएक्स - 100" से उत्पन्न सकारात्मक और नकारात्मक मूल्य से, हम जान सकते हैं कि माउसएक्स क्षैतिज कोडिनेट 100 के दाएं या बाएं है। इसी तरह "pmouseX - 100"। इसलिए, जब आगे और पीछे के दो बिंदु एक ही पक्ष में नहीं होते हैं, तो एक सकारात्मक नकारात्मक को गुणा करता है, इसे एक नई नकारात्मक संख्या मिलेगी। इस प्रकार निष्पादन की स्थिति संतुष्ट है।

उपरोक्त एक सरलीकृत अभिव्यक्ति है, जिसने चतुराई से एक निश्चित गणितीय एल्गोरिदम का उपयोग किया है - दो नकारात्मक गुणा एक सकारात्मक बना देगा। अलग-अलग चर्चा करने के लिए आप इसे दो स्थितियों में विभाजित भी कर सकते हैं। हालाँकि, निर्णय की शर्तों को लिखना बहुत अधिक जटिल है। निर्णय की शर्तें "अगर ((माउसएक्स = १००) || (माउसएक्स > १०० && pmouseX <= १००))" स्रोत कोड की निर्धारित शर्तों के बराबर है।

चरण 11: ऑडियो और वीडियो नियंत्रण के बारे में सापेक्ष कार्य

उपर्युक्त कार्य सामान्य उपयोग परिदृश्यों के लिए पर्याप्त हैं। यदि आप इसे गहराई से खोदना चाहते हैं, तो यहां मैंने आपके लिए ऑडियो और वीडियो के सापेक्ष कुछ सामान्य कार्य एकत्र किए हैं। आप अपनी आवश्यकताओं के अनुसार इसके उपयोगों का पता लगा सकते हैं।

अधिक परिचय के लिए, आप आधिकारिक वेबसाइट से दस्तावेज़ देख सकते हैं।

ऑडियो (https://processing.org/reference/libraries/sound/index.html)

वीडियो (https://processing.org/reference/libraries/video/index.html)

यह लेख डिजाइनर वेन्जी से आया है।

चरण 12: सापेक्ष रीडिंग:

डिजाइनर के लिए दिलचस्प प्रोग्रामिंग मार्गदर्शन - प्रारंभिक स्पर्श प्रसंस्करण

डिजाइनर के लिए दिलचस्प प्रोग्रामिंग मार्गदर्शन-अपना पहला प्रसंस्करण कार्यक्रम बनाएं

डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना चित्र चलाएँ (भाग एक)

डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना चित्र चलाएँ (भाग दो)

डिजाइनर-कार्यक्रम प्रक्रिया नियंत्रण के लिए दिलचस्प प्रोग्रामिंग मार्गदर्शन- लूप स्टेटमेंट

डिजाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस-प्रोग्राम प्रोसेस कंट्रोल-कंडीशन स्टेटमेंट (भाग एक)

डिजाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस-प्रोग्राम प्रोसेस कंट्रोल-कंडीशन स्टेटमेंट (भाग दो)

डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--कस्टम फ़ंक्शंस और फ्रैक्टल रिकर्सन

डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--कस्टम फ़ंक्शंस और फ्रैक्टल रिकर्सन

डिजाइनर के लिए दिलचस्प प्रसंस्करण प्रोग्रामिंग मार्गदर्शन - रंग नियंत्रण

चरण 13: स्रोत

यह लेख यहां से है:

यदि आपके कोई प्रश्न हैं, तो आप संपर्क कर सकते हैं: [email protected]