جدول المحتويات:

إرشادات برمجة معالجة مثيرة للاهتمام للمصمم - تحميل الوسائط والحدث: 13 خطوة
إرشادات برمجة معالجة مثيرة للاهتمام للمصمم - تحميل الوسائط والحدث: 13 خطوة

فيديو: إرشادات برمجة معالجة مثيرة للاهتمام للمصمم - تحميل الوسائط والحدث: 13 خطوة

فيديو: إرشادات برمجة معالجة مثيرة للاهتمام للمصمم - تحميل الوسائط والحدث: 13 خطوة
فيديو: React Conf 2021 - Replay 2024, شهر نوفمبر
Anonim
إرشادات برمجة معالجة مثيرة للاهتمام للمصمم - تحميل الوسائط والحدث
إرشادات برمجة معالجة مثيرة للاهتمام للمصمم - تحميل الوسائط والحدث

يمكن تحميل الكثير من البيانات الخارجية للمعالجة ، من بينها ثلاثة أنواع شائعة الاستخدام. هم الصورة والصوت والفيديو بشكل منفصل.

في هذا الفصل ، سنتحدث عن كيفية تحميل الصوت والفيديو بالتفصيل ، مع دمج الأحداث. في النهاية ، يمكنك إنشاء لوحة مفاتيح الموسيقى الخاصة بك أو لوحة الموسيقى.

الخطوة 1: قراءة الصورة

قبل أن نبدأ ، دعنا نلقي نظرة على طريقة تحميل الصور.

الخطوة 2: الوظائف ذات الصلة بالصورة

قبل أن نستخدم هذه الوظائف ، نحتاج إلى إنشاء كائن صورة من خلال PImage. ثم يمكننا استخدام هذه الوظائف لتحديد جميع أنواع خصائص الصورة.

لا تنس تخزين مصادر الصور الخاصة بك في ملف البيانات قبل تشغيل البرنامج.

الخطوة 3: تحميل الموسيقى وتشغيلها وإيقافها

في ما يلي ، نبدأ في تقديم استدعاء الموسيقى رسميًا لك. يشبه إلى حد كبير تحميل الصور ، يجب أن تعلن عن كائن صوتي في البداية. يمكنك الرجوع إلى المثال أدناه من القواعد الفعلية.

مثال رمز (10-1):

[cceN_cpp theme = "الفجر"] معالجة الاستيراد. الصوت. * ؛

SoundFile sound؛ صوت ملف؛

الإعداد باطل() {

الحجم (640 ، 360) ؛

الخلفية (255) ؛

sound = new SoundFile (هذا ، "1.mp3") ؛

}

رسم باطل () {

}

مفتاح باطل ، اضغط () {

//تشغيل الصوت

إذا (مفتاح == 'p') {

sound.play () ؛

}

// إيقاف الصوت

إذا (مفتاح == 's') {

sound.stop () ،

}

} [/cceN_cpp]

تحضير:

المعالجة نفسها لا تحمل أي مكتبة صوتية. تحتاج إلى تنزيله بنفسك. لذلك ، قبل كتابة التعليمات البرمجية الخاصة بك ، من الأفضل إجراء الاستعدادات التالية.

أضف مكتبة إلى المعالجة. إليك الممارسة الشائعة. اختر من شريط القائمة لـ "أداة" - "إضافة أداة" ، ثم انتقل إلى "مكتبات". أدخل الكلمات الرئيسية للمكتبة في عمود البحث حتى تتمكن من تنزيلها وتثبيتها مباشرة.

ومع ذلك ، إذا استخدمنا هذه الوظيفة في بلدنا المحلي (في الصين) ، فلا يمكننا تنزيلها عن طريق الاتصال بالويب مباشرة. علينا بدء تشغيل VPN. على الرغم من أننا بدأناها ، ستكون هناك ظروف غير مستقرة. لذلك عليك التحلي بالصبر لتجربته عدة مرات. هذه هي الطريقة الأكثر ملاءمة للتحميل. إذا لم تتمكن من التثبيت ، فيجب عليك التنزيل من الموقع الرسمي يدويًا. (https://processing.org/reference/libraries/) نظرًا لأن طريقة التثبيت اليدوي معقدة للغاية ، سنناقشها أكثر في الفصل الآخر.

كود Exaplain:

يمكن أن تعمل مكتبة الصوت بشكل صحيح بعد اكتمال الإعداد. تعامل مع الكود أعلاه ، انقر فوق RUN ، ثم سيعمل. اضغط على مفتاح "P" لتشغيل الموسيقى ، "S" لإيقاف الموسيقى.

إذا تم استخدامه للبرنامج ، فنحن بحاجة إلى تحميله أولاً. في البداية ، يجب أن نضيف جملة "import Processing.sound. *". "الاستيراد" هي الكلمة الأساسية ، أي التحميل حرفياً. أضف اسم المكتبة خلف "استيراد" ، ثم سيتم تحميل المكتبة. يتبع الذيل عادةً علامة "*" ، وبالتالي سيتم تحميل جميع الفئات المرتبطة بالمكتبة في البرنامج دون الحاجة إلى إضافتها واحدة تلو الأخرى يدويًا.

في الجملة الثانية ، أعلنت "SoundFile sound؛" عن كائن صوتي. SoundFile مشابه لـ PImage.

ضمن إعداد الوظيفة ، يتم استخدام "sound = new SoundFile (هذا ،" 1.mp3 ") ؛" لإنشاء كائن وتحديد مسار قراءته. هنا بدأنا بالفعل في استخدام فئة مفهوم جديدة. في الوقت الحالي نحن لا نناقشه بعمق. نحتاج فقط إلى معرفة أنها طريقة كتابة ثابتة والمعلمة الأخيرة هي ملء عنوان مصدر الموسيقى.

من بين أحداث keyPressed () ، يعمل "sound.play ()" و "sound.stop ()" نسبيًا كتأثير للتشغيل والتوقف. "." في المنتصف يشير إلى وظيفة العضو التي يتم تشغيلها وإيقافها تنتمي إلى الكائنات الصوتية. يمكننا اعتبار وظيفة العضو على أنها الوظيفة المضمنة في الكائن. إنه ينتمي إلى هذا الكائن ، الذي تم تحديده مسبقًا. في وقت لاحق ، عندما نحتاج إلى تشغيل كائنات صوتية متعددة ، علينا فقط إضافة ".play ()" خلف اسم المتغير النسبي.

يجب تخزين مصادر الصوت في ملف بيانات تحت نفس كتالوج ملف الرسم (مع لاحقة pde). إذا لم يكن هناك أي شيء ، فيمكنك إنشاء واحد يدويًا.

لا تنس أن تكتب وظيفة الرسم. على الرغم من أنك لم ترسم أي رسومات ، فمن الضروري تشغيل الموسيقى بنجاح.

يبدو الإجراء أعلاه معقدًا للغاية ، لكنك تحتاج إلى إضافة عدة جمل من التعليمات البرمجية فقط ، ثم يمكنك إدراك وظيفة اللعب. هذا مناسب جدا.

تدعم المعالجة تنسيقات الصوت الشائعة مثل mp3 و wav و ogg وما إلى ذلك.

الخطوة 4: التحكم في سرعة الموسيقى

ستبدأ الأمثلة التالية في أن تصبح مثيرة للاهتمام. قدمت المعالجة بعض الوظائف التي يمكنها التحكم في سرعة تشغيل الموسيقى. في الوقت نفسه ، ستتغير النغمات مع سرعة تشغيل الموسيقى. عندما نستخدم الماوس للتحكم ، فإنه سيولد تأثيرًا مخدرًا للغاية.

موقع الفيديو:

مثال رمز (10-2):

[cceN_cpp theme = "الفجر"] استيراد معالجة.الصوت. * ؛

SoundFile sound؛ صوت ملف؛

الإعداد باطل() {

الحجم (640 ، 360) ؛

الخلفية (255) ؛

sound = new SoundFile (هذا ، "1.mp3") ؛

}

رسم باطل () {

سرعة الطفو = mouseX / (تعويم) العرض * 3 ؛

معدل الصوت (السرعة) ؛

تعويم المجلد = mouseY / (تعويم) الارتفاع * 4 ؛

sound.amp (المجلد) ؛

}

مفتاح باطل ، اضغط () {

//تشغيل الصوت

إذا (مفتاح == 'p') {

sound.play () ؛

}

// إيقاف الصوت

إذا (مفتاح == 's') {

sound.stop () ،

}

} [/cceN_cpp]

شرح الكود:

Function.rate () تتحكم في سرعة تشغيل الصوت. تحدد القيمة الموجودة بين قوسين سرعة اللعب السريعة والبطيئة. عندما تكون القيمة 1 ، تكون سرعة التشغيل طبيعية. عندما يتجاوز 1 ، ثم تسريع ؛ بينما هو أقل من 1 ، ثم يتباطأ.

Function.amp () تتحكم في مستوى الصوت. تحدد القيمة الموجودة بين القوسين قيمة الحجم. عندما تكون 1 ، تكون قيمة الصوت طبيعية. عندما يتجاوز 1 ، قم بزيادة الحجم ؛ بينما يكون أقل من 1 ، قم بتقليل الحجم.

لقد قمنا هنا ببناء متغيرين محليين هما السرعة والحجم كمعلمات يتم تحميلها فيهما. لذلك ، سيؤدي التنسيق الأفقي للماوس إلى تغيير نغمة الموسيقى ، وسيؤدي التنسيق الرأسي إلى تغيير مستوى صوت الموسيقى.

الخطوة 5: تشغيل الفيديو وإيقافه

في المعالجة ، يشبه تحميل الفيديو تحميل الصوت. يجب عليك تنزيل مكتبة الفيديو أولاً. (https://processing.org/reference/libraries/video/index.html)

مثال رمز (10-3):

[cceN_cpp theme = "dawn"] استيراد معالجة.فيديو. * ؛

فيلم وسائل التحقق

الإعداد باطل() {

الحجم (640 ، 360) ؛

الخلفية (0) ؛

mov = فيلم جديد (هذا ، "1.mov") ؛

}

باطل movieEvent (فيلم فيلم) {

mov.read () ؛

}

رسم باطل () {

الصورة (mov، 0، 0، 640، 360) ؛

}

مفتاح باطل ، اضغط () {

إذا (مفتاح == 'p') {

mov.play () ؛

}

إذا (مفتاح == 's') {

mov.stop () ،

}

إذا (مفتاح == 'د') {

mov.pause () ؛

}

} [/cceN_cpp]

لقطة فيديو:

شرح الكود:

يتم استخدام الجملة الأولى "import Processing.video. *؛" لتحميل مكتبة الفيديو.

تستخدم الجملة الثانية "Movie mov؛" للإعلان عن كائن الفيديو. من بينها ، تشبه وظيفة "الفيلم" وظيفة PImage.

في إعداد الوظيفة ، يكون تأثير "mov = new Movie (هذا ،" 1.mov ") ؛" هو إنشاء كائن وتحديد مسار قراءته. يجب ملء المعلمة الأخيرة بعنوان مصدر الفيديو.

إعداد Behine ، يمثل movieEvent حدث فيديو. يتم استخدامه لتحديث وقراءة معلومات الفيديو. "mov.read ()" في الحدث يعني قراءة.

باستثناء عرض الصور ، يمكن للصورة الوظيفية أن تعرض الفيديو أيضًا. يمكننا اعتبار كائن الفيديو كصورة ديناميكية. المعلمة الأولى ، نملأ اسم المتغير لكائن الفيديو. المعلمتان الثانية والثالثة هما الإحداثيات الأفقية والرأسية المرسومة بالفيديو. تحدد المعلمتان الرابعة والخامسة طول وعرض عرض الفيديو.

الوظيفة. play () تعني اللعب. الوظيفة.stop () تعني توقف ، وستقوم بإعادة ضبط الفيديو. الوظيفة. pause () تعني وقفة. سوف يقطع التشغيل الحالي ، والذي سيستمر حتى يتم استدعاء الوظيفة.play ().

الخطوة 6: التحكم في سرعة الفيديو

مثال رمز (10-4):

[cceN_cpp theme = "dawn"] استيراد معالجة.فيديو. * ؛

فيلم وسائل التحقق

الإعداد باطل() {

الحجم (640 ، 360) ؛

الخلفية (0) ؛

mov = فيلم جديد (هذا ، "rans.mov ") ؛

}

باطل movieEvent (فيلم فيلم) {

mov.read () ؛

}

رسم باطل () {

الصورة (موف ، 0 ، 0 ، عرض ، ارتفاع) ؛

تعويم newSpeed = mouseX / (تعويم) العرض * 4 ؛

mov.speed (newSpeed) ؛

}

مفتاح باطل ، اضغط () {

إذا (مفتاح == 'p') {

mov.play () ؛

}

إذا (مفتاح == 's') {

mov.stop () ،

}

إذا (مفتاح == 'د') {

mov.pause () ؛

}

}

[/cceN_cpp]

شرح الكود:

يمكن استخدام الوظيفة.speed () للتحكم في سرعة تشغيل الفيديو. عندما تكون قيمة المعلمة 1 ، تكون سرعة التشغيل طبيعية. عندما تتجاوز القيمة 1 ، ثم تسريع ؛ بينما هو أقل من 1 ، ثم يتضاءل.

نظرًا لأننا أنشأنا متغيرًا محليًا newSpeed واستوردناه في وظيفة setSpeed () ، فإن إحداثيات الماوس ستؤثر على سرعة تشغيل الفيديو مباشرةً.

لمزيد من الأمثلة حول الفيديو ، يمكنك الرجوع إلى المكتبات - الفيديو في مكتبة الحالة.

الخطوة 7: معالجة الأحداث المشتركة

في السابق ، قدمنا حدث keyPressed () فقط. سيتم تشغيله بعد الضغط على لوحة المفاتيح. في ما يلي ، سوف نقدم أحداثًا أخرى مشتركة في المعالجة من أجلك.

استخدامات الأحداث المذكورة أعلاه تشبه keyPressed. ليس لديهم تسلسل في كتابة التعليمات البرمجية. بمعنى آخر ، بغض النظر عن الحدث الذي وضعته قبل أو خلف إعداد الوظيفة ، ستحصل على نفس النتيجة. أمر التنفيذ مرتبط فقط بشرط بدء الحدث نفسه. فقط إذا تم استيفاء الشرط ، فسيتم تنفيذه. جميع الأحداث المذكورة أعلاه سهلة الفهم. عليك فقط القيام بتجربة صغيرة ، ثم يمكنك فهم استخداماتها بسرعة.

تدفق الأحداث

يمكننا استخدام مثال لمعرفة ترتيب تنفيذ الأحداث.

مثال رمز (10-5):

[cceN_cpp theme = "dawn"] إعداد باطل () {

frameRate (2) ؛

println (1) ؛

}

رسم باطل () {

println (2) ؛

}

ماوس باطل مضغوط () {

println (3) ؛

}

تم تحريك الماوس باطل () {

println (4) ؛

}

ماوس باطل تم إصداره () {

println (5) ؛

}

مفتاح باطل ، اضغط () {

println (6) ؛

}

مفتاح باطل تم إصداره () {

println (7) ؛

} [/cceN_cpp]

شرح الكود:

في إعداد الوظيفة ، حددت وظيفة frameRate () معدل سرعة تشغيل البرنامج ليكون إطارين في الثانية. يمكن أن يساعدنا خفض معدل الإطارات في مراقبة الإخراج في وحدة التحكم في حالة ظهور الأحداث التي تم تشغيلها على الفور بواسطة بيانات جديدة في الخلف.

حاول تحريك الماوس والنقر بالماوس وتحرير الماوس ومراقبة نتيجة الإخراج. تعرف على أمر تنفيذ الحدث من خلال println.

ما يستحق الاهتمام هو أن وظائف الرسم لا يمكن كتابتها في أحداث أخرى باستثناء رسم الوظيفة ، أو لا يمكن عرضها. إذا أردنا التحكم في إخفاء وعرض مكونات الرسوم من خلال أحداث مثل keyPressed ، فقد نفكر في إنشاء متغير منطقي كوسيط.

سيتم تنفيذ الأحداث بالترتيب. فقط بعد تنفيذ كل التعليمات البرمجية في الحدث الحالي ، سيتم تنفيذ الكود في الحدث التالي.

الخطوة 8: مثال شامل - لوحة مفاتيح الموسيقى

بالدمج مع الأحداث التي تم التعرف عليها حديثًا ، يمكننا إضافة تفاعلات جديدة إلى برنامجنا. بعد ذلك ، في غضون دقائق قليلة ، يمكننا مقارنة لوحة مفاتيح الموسيقى بسهولة.

موقع الفيديو:

مثال رمز (10-6):

[cceN_cpp theme = "الفجر"] استيراد معالجة.الصوت. * ؛

SoundFile sound1 ، sound2 ، sound3 ، sound4 ، sound5 ؛

منطقي key1 ، key2 ، key3 ، key4 ، key5 ؛

الإعداد باطل() {

الحجم (640 ، 360) ؛

الخلفية (255) ؛

noStroke () ،

sound1 = ملف SoundFile جديد (هذا ، "do.wav") ؛

sound2 = ملف SoundFile جديد (هذا ، "re.wav") ؛

sound3 = ملف SoundFile جديد (هذا ، "mi.wav") ؛

sound4 = ملف SoundFile جديد (هذا ، "fa.wav") ؛

sound5 = ملف SoundFile جديد (هذا ، "so.wav") ؛

}

رسم باطل () {

الخلفية (255 ، 214 ، 79) ؛

RectMode (CENTER) ،

تعويم ث = العرض * 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) ؛

} آخر {

ملء (124 ، 60 ، 131) ؛

}

مستقيم (عرض / 6 * 4 ، ارتفاع / 2 ، عرض ، ارتفاع) ؛

إذا (مفتاح 5) {

ملء (255) ؛

} آخر {

ملء (107 ، 27 ، 157) ؛

}

مستقيم (عرض / 6 * 5 ، ارتفاع / 2 ، عرض ، ارتفاع) ؛

}

مفتاح باطل ، اضغط () {

إذا (مفتاح == 'أ') {

sound1.play () ؛

key1 = صحيح ؛

}

إذا (مفتاح == 's') {

sound2.play () ؛

key2 = صحيح ؛

}

إذا (مفتاح == 'د') {

sound3.play () ؛

key3 = صحيح ؛

}

إذا (المفتاح == 'f') {

sound4.play () ؛

key4 = صحيح ؛

}

إذا (مفتاح == 'ز') {

sound5.play () ؛

key5 = صحيح ؛

}

}

مفتاح باطل تم إصداره () {

إذا (مفتاح == 'أ') {

key1 = خطأ ؛

}

إذا (مفتاح == 's') {

key2 = خطأ ؛

}

إذا (مفتاح == 'د') {

key3 = خطأ ؛

}

إذا (المفتاح == 'f') {

key4 = خطأ ؛

}

إذا (مفتاح == 'ز') {

key5 = خطأ ؛

}

} [/cceN_cpp]

شرح الكود:

نحتاج إلى إنشاء كائنات صوتية متعددة لقراءة معلومات الصوت النسبية لتشغيل أصوات مختلفة عند تشغيل مفاتيح مختلفة.

هنا نستخدم مفتاح حدث جديد (). تتمثل وظيفة هذا الحدث في استعادة لون لوحة المفاتيح إلى لونه الأصلي. عند تحرير المفتاح ، سيتم تشغيله.

يتم استخدام القيم المنطقية الخمس المعلنة في الرأس لاكتشاف حالة المفتاح.

الخطوة 9: مثال شامل - لوحة الموسيقى 1

إلى جانب حدث لوحة المفاتيح ، يعد حدث الماوس أمرًا جيدًا يتعين علينا استخدامه بمرونة. المثال التالي بالنسبة لنا هو إنشاء لوحة موسيقية ، من بينها استخدمنا حدثين مرتبطين بالماوس.

موقع الفيديو:

مثال رمز (10-7):

[cceN_cpp theme = "الفجر"] استيراد معالجة.الصوت. * ؛

SoundFile sound1 ، sound2 ، sound3 ، sound4 ، sound5 ؛

المنطقية هي السحب.

الإعداد باطل() {

الحجم (640 ، 360) ؛

الخلفية (255 ، 214 ، 79) ؛

noStroke () ،

sound1 = ملف SoundFile جديد (هذا ، "do.wav") ؛

sound2 = ملف SoundFile جديد (هذا ، "re.wav") ؛

sound3 = ملف SoundFile جديد (هذا ، "mi.wav") ؛

sound4 = ملف SoundFile جديد (هذا ، "fa.wav") ؛

sound5 = ملف SoundFile جديد (هذا ، "so.wav") ؛

}

رسم باطل () {

إذا (هو السحب) {

ملء (107 ، 27 ، 157 ، 100) ؛

القطع الناقص (mouseX ، mouseY ، 16 ، 16) ؛

}

}

فأرة فارغة مسحوبة () {

هو السحب = صحيح ؛

إذا (mouseX> 100 && mouseX <105) {

sound1.play () ؛

}

إذا (mouseX> 200 && mouseX <205) {

sound2.play () ؛

}

إذا (mouseX> 300 && mouseX <305) {

sound3.play () ؛

}

إذا (mouseX> 400 && mouseX <405) {

sound4.play () ؛

}

إذا (mouseX> 500 && mouseX <505) {

sound5.play () ؛

}

}

ماوس باطل تم إصداره () {

هو السحب = خطأ ؛

} [/cceN_cpp]

شرح الكود:

نأمل أنه فقط عندما نضغط على الماوس وسحبه ، يمكننا رسم الصور. لذلك نحن بحاجة إلى بناء متغير منطقي هو السحب للحصول على الوضع الحالي.

عند سحب الماوس ، تصبح قيمة isDragging حقيقية بحيث يتم تنفيذ وظائف الرسم داخل Draw. ستترك آثارًا على الشاشة. عندما نحرر الماوس ، يصبح السحب قيمة خاطئة. لذا فإن وظائف الرسم في رسم الوظائف ستتوقف عن التنفيذ.

لقد قمنا بتصميم العديد من شروط التشغيل في حدث سحب الماوس. على سبيل المثال ، عندما يكون التنسيق الأفقي للماوس بين 100 و 105 بكسل ، سيتم تشغيل الموسيقى تلقائيًا. هذا يجعل الشاشة تقوم بإنشاء عدة سلاسل غير مرئية. فقط إذا مر الماوس عبر مناطق معينة ، فسيؤدي ذلك إلى تشغيل الموسيقى النسبية.

الخطوة 10: مثال شامل - لوحة الموسيقى 2 (نسخة محدثة)

تأثير المثال أعلاه جيد بالفعل بما فيه الكفاية. لكن إذا شاهدناه بعناية ، فسنجد الكثير من المشاكل. على سبيل المثال ، عندما يتحرك الماوس بسرعة كبيرة ، فإنه سيترك نقطة مستديرة على الشاشة في كل مرة يتحرك فيها. إنه ليس خطًا مستقيمًا متماسكًا. وفي الوقت نفسه ، يتسبب أيضًا في حدوث بعض تسرب الموسيقى. بينما عندما يتحرك الماوس ببطء شديد ، ويمر عبر الموضع عندما يكون الإحداثي الأفقي بين 100 و 105 ، فإنه سيبث الموسيقى عدة مرات خلال فترة زمنية قصيرة جدًا ، مما يمنحك شعوراً بالتعثر. كل هذه المشاكل يمكننا حلها من خلال المثال أدناه.

يمكنك مشاهدة مقاطع الفيديو في الرابط أدناه:

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

مثال رمز (10-8):

[cceN_cpp theme = "الفجر"] استيراد معالجة.الصوت. * ؛

SoundFile sound1 ، sound2 ، sound3 ، sound4 ، sound5 ؛

منطقي هو السحب.

الإعداد باطل() {

الحجم (640 ، 360) ؛

الخلفية (255 ، 214 ، 79) ؛

noStroke () ،

sound1 = ملف SoundFile جديد (هذا ، "do.wav") ؛

sound2 = ملف SoundFile جديد (هذا ، "re.wav") ؛

sound3 = ملف SoundFile جديد (هذا ، "mi.wav") ؛

sound4 = ملف SoundFile جديد (هذا ، "fa.wav") ؛

sound5 = ملف SoundFile جديد (هذا ، "so.wav") ؛

}

رسم باطل () {

إذا (هو السحب) {

السكتة الدماغية (107 ، 27 ، 157 ، 100) ؛

الوزن (10) ؛

الخط (mouseX ، mouseY ، pmouseX ، pmouseY) ؛

}

}

فأرة فارغة مسحوبة () {

هو السحب = صحيح ؛

إذا ((mouseX - 100) * (pmouseX - 100) <0) {

sound1.play () ؛

}

إذا ((mouseX - 200) * (pmouseX - 200) <0) {

sound2.play () ؛

}

إذا ((mouseX - 300) * (pmouseX - 300) <0) {

sound3.play () ؛

}

إذا ((mouseX - 400) * (pmouseX - 400) <0) {

sound4.play () ؛

}

إذا ((mouseX - 500) * (pmouseX - 500) <0) {

sound5.play () ؛

}

}

ماوس باطل تم إصداره () {

هو السحب = خطأ ؛

} [/cceN_cpp]

شرح الكود:

استخدمنا هنا متغيرين pmouseX و pmouseY محملين في نظام المعالجة نفسه. إنها تشبه mouseX و mouseY ولكن ما حصلوا عليه هو إحداثيات الماوس في الإطار الأخير.

في رسم الوظائف ، استخدمنا سطر الوظيفة () لاستبدال الدالة الأصلية القطع الناقص (). هذا يجعل إحداثيات الإطار الأخير مرتبطة بإحداثيات الإطار الحالي مباشرة. حتى نتمكن من رسم خطوط مستقيمة أو منحنيات متماسكة.

في حالة سحب الماوس ، قمنا بتصميم حالة تشغيل جديدة.من خلال الحكم على ما إذا كان إحداثيات الإطار الأخير والإطار الحالي في نفس الجانب لمعرفة ما إذا كان هناك إحداثي معين متقاطع. خذ هذا الشرط كمثال: "if ((mouseX - 100) * (pmouseX - 100) <0)". من بينها ، من القيمة الموجبة والسالبة الناتجة عن "mouseX - 100" ، يمكننا معرفة ما إذا كان mouseX على يمين أو يسار العنصر الأفقي 100. على غرار "pmouseX - 100". لذلك ، عندما لا تكون النقطتان في الأمام والخلف في نفس الجانب ، فإن الموجب يضرب في سالب ، سيحصل على رقم سالب جديد. وبالتالي يتم استيفاء شرط التنفيذ.

ما ورد أعلاه عبارة عن تعبير مبسط ، استخدم بذكاء خوارزمية رياضية معينة - مضاعفة سالبين سيخلقان قيمة موجبة. يمكنك أيضًا تقسيمها إلى حالتين لمناقشتهما بشكل منفصل. ومع ذلك ، فإن كتابة شروط الحكم أكثر تعقيدًا. شروط الحكم "if ((mouseX = 100) || (mouseX> 100 && pmouseX <= 100))" تعادل الشروط المحددة لشفرة المصدر.

الخطوة 11: الوظائف النسبية حول التحكم في الصوت والفيديو

الوظائف المذكورة أعلاه كافية لسيناريوهات الاستخدام العامة. إذا كنت ترغب في حفرها بعمق ، فقد جمعت هنا بعض الوظائف الشائعة المتعلقة بالصوت والفيديو من أجلك. يمكنك استكشاف استخداماته وفقًا لمتطلباتك الخاصة.

لمزيد من المقدمة ، يمكنك الرجوع إلى الوثائق من الموقع الرسمي.

الصوت (https://processing.org/reference/libraries/sound/index.html)

فيديو (https://processing.org/reference/libraries/video/index.html)

هذه المقالة مأخوذة من المصمم Wenzy.

الخطوة 12: القراءات النسبية:

إرشادات البرمجة الشيقة للمصمم - معالجة اللمسة الأولية

إرشادات البرمجة الشيقة للمصمم - قم بإنشاء برنامج المعالجة الأول الخاص بك

إرشادات برمجة شيقة للمصمم - ابدأ تشغيل صورتك (الجزء الأول)

إرشادات برمجة شيقة للمصمم - احصل على صورتك قيد التشغيل (الجزء الثاني)

إرشادات برمجة مثيرة للاهتمام للمصمم - التحكم في عملية البرنامج - بيان الحلقة

إرشادات برمجة مثيرة للاهتمام للمصمم - التحكم في عملية البرنامج - بيان الحالة (الجزء الأول)

إرشادات برمجة مثيرة للاهتمام للمصمم - التحكم في عملية البرنامج - بيان الحالة (الجزء الثاني)

دليل برمجة مثير للاهتمام للمصمم - وظائف مخصصة وتكرار كسوري

دليل برمجة مثير للاهتمام للمصمم - وظائف مخصصة وتكرار كسوري

إرشادات برمجة معالجة مثيرة للاهتمام للمصمم - التحكم في اللون

الخطوة 13: المصدر

هذه المقالة مأخوذة من:

إذا كان لديك أي أسئلة ، يمكنك التواصل مع : [email protected].

موصى به: