From Test-Scratch-Wiki
जब () कुंजी दबायी गयी | |
when [ v] key pressed
| |
Category | घटना |
Type | हैट |
जब () कुंजी दबाई गई ब्लॉक एक हैट ब्लॉक और एक घटना ब्लॉक है। निर्दिष्ट कुंजी दबाए जाने पर इस ब्लॉक के नीचे रखी गई स्क्रिप्ट सक्रिय हो जाएंगी।
इस ब्लॉक से जिन कुंजियों को महसूस किया जा सकता है उनमें संपूर्ण अंग्रेजी वर्णमाला b (a c आदि), संख्या कुंजियाँ (0 1 2 आदि), तीर कुँजियाँ (← ↑ → ↓} ), और space कुंजी। अपडेट के बाद, इस ब्लॉक में अब एक any विकल्प शामिल है, जो ब्लॉक को संचालित करने के लिए किसी भी कुंजी को दबाने की अनुमति देता है।
प्रायोगिक व्यूअर में, ↵ Enter कुंजी (या Mac पर return कुंजी) को भी महसूस किया जा सकता है।
"हैक ब्लॉक" का उपयोग करना संभव है जो उन बटनों को संपादित करने और बदलने की अनुमति देता है जिनका यह ब्लॉक पता लगा सकता है।
ऑपरेटिंग सिस्टम की सेटिंग्स के आधार पर ब्लॉक सक्रिय हो जाएगा। उदाहरण के लिए, यदि किसी कुंजी को दबाकर रखा जाता है, तो यह बाद में दोहराई जा सकती है या नहीं, यह इस पर निर्भर करता है कि उपयोगकर्ता का ऑपरेटिंग सिस्टम दबाई गई कुंजियों को दोहराने के लिए सेट है या नहीं। इस कारण से, ऐसी परियोजनाएँ न बनाना सबसे अच्छा है जो ब्लॉक द्वारा दिए गए प्रमुख दोहराव पर बहुत अधिक निर्भर हों।
उदाहरण उपयोग
इस ब्लॉक का उपयोग विभिन्न प्रकार के उपयोगों के लिए प्लेयर से इनपुट प्राप्त करने के लिए किया जाता है।
कुछ सामान्य उपयोगों में शामिल हैं:
- किसी वस्तु को नियंत्रित करना
when [space v] key pressed broadcast (fire v) repeat (5) change y by (5)
- वर्ड प्रोसेसर पर टाइप करना
when [a v] key pressed switch costume to (a v) stamp change x by (20)
- एनिमेशन प्रारंभ करना
when [space v] key pressed broadcast (animation starts v) play sound (intro v)
- मानचित्र के चारों ओर घूमना
when [up arrow v] key pressed change y by (15)
![]() | अंतर्निहित देरी के कारण, <key (v) pressed?> बूलियन का उपयोग अक्सर आंदोलन के लिए किया जाता है, क्योंकि यह अपनी स्क्रिप्ट को अधिक तेजी से निष्पादित करेगा और आंदोलन को सुचारू बना देगा। |
माउस स्क्रॉलिंग का पता लगाना
जब इस ब्लॉक को सेंस ↑ और ↓ पर सेट किया जाता है, तो यह माउस स्क्रॉलिंग को भी सेंस करेगा। अतिरिक्त कोड जोड़ा जा सकता है ताकि केवल माउस स्क्रॉल का पता लगाया जा सके:
when [up arrow v] key pressed if <not<key (up arrow v) pressed?>> then ... // केवल ऊपर स्क्रॉल करने का पता लगाएगा end
when [down arrow v] key pressed if <not<key (down arrow v) pressed?>> then ... // केवल नीचे स्क्रॉल करने का पता लगाएगा end
समाधान
इस ब्लॉक को निम्नलिखित कोड के साथ आंशिक रूप से दोहराया जा सकता है:
when flag clicked forever if <key (wanted key v) pressed?> then . . . end
![]() | यह समाधान सटीक नहीं है, क्योंकि स्क्रिप्ट के बीच में हैट ब्लॉक टूट जाएगा, लेकिन समाधान नहीं होगा। हैट ब्लॉक में अंतर्निहित विलंब (यदि कुंजी को दबाए रखा जाता है, तो थोड़ा विराम होगा, उसके बाद एक छोटा विराम) वर्कअराउंड में अंतर्निहित नहीं है। इसके अलावा, हैट ब्लॉक को हरे झंडे को दबाने की आवश्यकता नहीं है। |
एक अधिक सटीक समाधान:
when gf clicked forever if <key (key v) pressed?> then broadcast (ready v)
when I receive [ready v] . . .