فهرست مطالب:
- مرحله 1: تصویر را بخوانید
- مرحله 2: توابع مربوط به تصویر
- مرحله 3: بارگیری موسیقی ، پخش و توقف
- مرحله 4: کنترل سرعت موسیقی
- مرحله 5: پخش و توقف ویدئو
- مرحله 6: کنترل سرعت ویدئو
- مرحله 7: پردازش رویدادهای متداول
- مرحله 8: مثال جامع-صفحه کلید موسیقی
- مرحله 9: مثال جامع-موسیقی پالت 1
- مرحله 10: مثال جامع-موسیقی پالت 2 (نسخه به روز شده)
- مرحله 11: توابع نسبی درباره کنترل صدا و تصویر
- مرحله 12: خواندن نسبی:
- مرحله 13: منبع
تصویری: راهنمای برنامه نویسی پردازش جالب برای طراح-بارگذاری رسانه و رویداد: 13 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
پردازش را می توان تعداد زیادی داده خارجی بارگذاری کرد که در بین آنها سه نوع بسیار مورد استفاده قرار می گیرد. آنها بصورت جداگانه تصویر ، صدا و تصویر هستند.
در این فصل ، ما قصد داریم در مورد نحوه بارگذاری صوتی و تصویری با جزئیات و ترکیب با رویدادها صحبت کنیم. در پایان ، می توانید صفحه کلید موسیقی یا پالت موسیقی خود را ایجاد کنید.
مرحله 1: تصویر را بخوانید
قبل از شروع ، بیایید به روش بارگذاری تصویر نگاه کنیم.
مرحله 2: توابع مربوط به تصویر
قبل از استفاده از این توابع ، باید یک شیء تصویر را از طریق PImage ایجاد کنیم. سپس می توانیم از این توابع برای تعریف انواع ویژگی های تصویر استفاده کنیم.
فراموش نکنید که منابع تصویر خود را قبل از اجرای برنامه در فایل داده ذخیره کنید.
مرحله 3: بارگیری موسیقی ، پخش و توقف
در ادامه ، ما شروع به معرفی رسمی فراخوانی موسیقی به شما می کنیم. بسیار شبیه به بارگذاری تصویر ، شما باید یک شیء صوتی را در ابتدا اعلام کنید. از دستور زبان واقعی می توانید به مثال زیر مراجعه کنید.
مثال کد (10-1):
[cceN_cpp theme = "dawn"] import processing.sound.*؛
صدای SoundFile ؛
void setup () {
اندازه (640 ، 360) ؛
پس زمینه (255) ؛
صدا = SoundFile جدید (این ، "1.mp3") ؛
}
void draw () {
}
void keyPressed () {
//پخش صدا
if (key == 'p') {
sound.play ()؛
}
// قطع صدا
if (key == 's') {
sound.stop ()؛
}
} [/cceN_cpp]
آماده سازی:
پردازش خود هیچ کتابخانه صدا را حمل نمی کند. باید خودتان آن را بارگیری کنید. بنابراین ، قبل از نوشتن کد خود ، بهتر است مقدمات زیر را انجام دهید.
افزودن کتابخانه به پردازش در اینجا روش معمول است. از نوار منو "Tool"- "Add Tool" را انتخاب کنید و سپس به "Libraries" بروید. کلمات کلیدی کتابخانه را در ستون جستجو وارد کنید تا بتوانید مستقیماً آن را بارگیری و نصب کنید.
با این حال ، اگر از این عملکرد در کشور خودمان (در چین) استفاده کنیم ، نمی توانیم آن را با اتصال مستقیم وب بارگیری کنیم. ما باید VPN را راه اندازی کنیم. حتی اگر آن را شروع کنیم ، شرایط ناپایداری وجود خواهد داشت. بنابراین برای امتحان چندین بار باید صبور باشید. این راحت ترین روش بارگیری است. اگر نمی توانید نصب کنید ، باید از وب سایت رسمی به صورت دستی بارگیری کنید. (https://processing.org/reference/libraries/) از آنجا که روش نصب دستی بسیار پیچیده است ، در فصل دیگر بیشتر در مورد آن بحث خواهیم کرد.
کد توضیح داده شده:
پس از اتمام آماده سازی ، کتابخانه صدا می تواند به درستی کار کند. با کد بالا کنار بیایید ، روی RUN کلیک کنید ، سپس کار می کند. برای پخش موسیقی کلید "P" ، برای توقف موسیقی "S" را فشار دهید.
اگر به برنامه عادت کرده است ، ابتدا باید آن را بارگذاری کنیم. در ابتدا ، ما باید یک جمله "import processing.sound.*" اضافه کنیم. "واردات" کلمه کلیدی است ، به معنای بارگذاری به معنای واقعی کلمه. نام کتابخانه را در پشت "import" اضافه کنید ، سپس کتابخانه بارگیری می شود. دم معمولاً از علامت "*" پیروی می کند ، بنابراین تمام کلاس های مربوط به کتابخانه را بدون نیاز به افزودن دستی آنها به برنامه بارگذاری می کند.
در جمله دوم "SoundFile sound؛" یک شی صوتی را اعلام کرده است. SoundFile مشابه PImage است.
در تنظیمات عملکرد ، "sound = new SoundFile (این ،" 1.mp3 ")؛" برای ایجاد یک شی و تعریف مسیر خواندن آن استفاده می شود. در اینجا ما در واقع استفاده از کلاس مفهومی جدیدی را آغاز کرده ایم. در حال حاضر ما عمیقا در مورد آن بحث نمی کنیم. ما فقط باید بدانیم که یک روش نوشتاری ثابت است و آخرین پارامتر برای پر کردن آدرس منبع موسیقی است.
در میان رویدادهای keypress () ، "sound.play ()" و "sound.stop ()" نسبتاً به عنوان تأثیر بازی و توقف عمل می کنند. "." در وسط یک عملکرد عضو را نشان می دهد که پخش و توقف متعلق به اشیاء صوتی است. ما می توانیم تابع عضو را به عنوان تابع موجود در شیء در نظر بگیریم. این متعلق به این شی است که از قبل تعریف شده است. بعداً ، هنگامی که باید چندین شیء صوتی را پخش کنیم ، فقط باید ".play ()" را در پشت نام متغیر نسبی اضافه کنیم.
منابع صوتی باید در یک فایل داده تحت همان فهرست sketchfile (با پسوند pde) ذخیره شوند. اگر هیچ کدام وجود ندارد ، می توانید یکی را به صورت دستی ایجاد کنید.
نوشتن رسم عملکرد را فراموش نکنید. اگرچه شما هیچ گرافیکی ترسیم نکرده اید ، اما لازم است موسیقی را با موفقیت پخش کنید.
روش فوق کاملاً پیچیده به نظر می رسد ، اما فقط باید چندین جمله کد اضافه کنید ، سپس می توانید عملکرد پخش را درک کنید. بسیار راحت است.
پردازش از فرمت های رایج صوتی مانند mp3 ، wav ، ogg و غیره پشتیبانی می کند.
مرحله 4: کنترل سرعت موسیقی
مثالهای زیر بسیار جالب خواهند شد. پردازش برخی عملکردها را ارائه می دهد که می تواند سرعت پخش موسیقی را کنترل کند. در همان زمان ، آهنگ ها با سرعت پخش موسیقی تغییر می کنند. وقتی از ماوس برای کنترل استفاده می کنیم ، اثر روانگردان ایجاد می کند.
وب سایت ویدیویی:
مثال کد (10-2):
[cceN_cpp theme = "dawn"] import processing.sound.*؛
صدای SoundFile ؛
void setup () {
اندازه (640 ، 360) ؛
پس زمینه (255) ؛
صدا = SoundFile جدید (این ، "1.mp3") ؛
}
void draw () {
سرعت شناور = mouseX/(float) عرض * 3؛
sound.rate (سرعت) ؛
float vol = mouseY/(float) ارتفاع * 4؛
sound.amp (جلد) ؛
}
void keyPressed () {
//پخش صدا
if (key == 'p') {
sound.play ()؛
}
// قطع صدا
if (key == 's') {
sound.stop ()؛
}
} [/cceN_cpp]
کد توضیح دهید:
تابع.rate () سرعت پخش صدا را کنترل می کند. مقدار داخل پرانتز ، سرعت و کندی سرعت بازی را تعیین می کند. وقتی مقدار 1 باشد ، سرعت پخش نرمال است. هنگامی که فراتر از 1 است ، سپس شتاب دهید. در حالی که زیر 1 است ، سپس سرعت را کاهش دهید.
تابع.amp () میزان صدا را کنترل می کند. مقدار داخل پرانتز مقدار حجم را تعیین می کند. هنگامی که 1 است ، مقدار صدا طبیعی است. وقتی فراتر از 1 است ، حجم را افزایش دهید. در حالی که زیر 1 است ، سپس حجم را کاهش دهید.
در اینجا ما دو متغیر محلی سرعت و vol را به عنوان پارامترهایی برای بارگذاری در آنها ساخته ایم. بنابراین مختصات افقی ماوس صدای موسیقی را تغییر می دهد و مختصات عمودی میزان موسیقی را تغییر می دهد.
مرحله 5: پخش و توقف ویدئو
در پردازش ، بارگذاری ویدیو مشابه بارگیری صوتی است. ابتدا باید کتابخانه ویدیو را بارگیری کنید. (https://processing.org/reference/libraries/video/index.html)
مثال کد (10-3):
[cceN_cpp theme = "dawn"] import processing.video.*؛
فیلم متحرک؛
void setup () {
اندازه (640 ، 360) ؛
پس زمینه (0) ؛
mov = فیلم جدید (این ، "1.mov") ؛
}
void movieEvent (فیلم فیلم) {
mov.read ()؛
}
void draw () {
تصویر (mov، 0، 0، 640، 360)؛
}
void keyPressed () {
if (key == 'p') {
mov.play ()؛
}
if (key == 's') {
mov.stop ()؛
}
if (key == 'd') {
mov.pause ()؛
}
} [/cceN_cpp]
تصویر صفحه ویدئو:
کد توضیح دهید:
اولین جمله "import processing.video.*؛" برای بارگیری کتابخانه ویدئو استفاده می شود.
جمله دوم "Movie mov؛" برای اعلام شیء ویدئویی استفاده می شود. در میان آن ، عملکرد "فیلم" شبیه PImage است.
در تنظیم عملکرد ، اثر "mov = new Movie (this،" 1.mov ")؛" ایجاد شی و تعیین مسیر خواندن آن است. آخرین پارامتر باید با آدرس منبع ویدئو پر شود.
راه اندازی Behine ، movieEvent نشان دهنده رویداد ویدئویی است. برای به روز رسانی و خواندن اطلاعات ویدیویی استفاده می شود. "mov.read ()" در صورت معنی خواندن است.
به جز نمایش تصاویر ، تصویر عملکردی می تواند ویدئو را نیز نمایش دهد. ما می توانیم شیء ویدئویی را به عنوان یک تصویر پویا در نظر بگیریم. اولین پارامتر ، نام متغیر شیء ویدیو را پر می کنیم. پارامترهای دوم و سوم مختصات افقی و عمودی است که توسط فیلم ترسیم شده است. پارامترهای چهارم و پنجم طول و عرض نمایش ویدیو را تعیین می کنند.
تابع.play () به معنی بازی است. تابع.stop () به معنی توقف است و ویدیو را بازنشانی می کند. تابع.pause () به معنی مکث است. پخش فعلی را قطع می کند ، که تا فراخوانی تابع (.play) ادامه می یابد.
مرحله 6: کنترل سرعت ویدئو
مثال کد (10-4):
[cceN_cpp theme = "dawn"] import processing.video.*؛
فیلم متحرک؛
void setup () {
اندازه (640 ، 360) ؛
پس زمینه (0) ؛
mov = فیلم جدید (این ، "transit.mov")؛
}
void movieEvent (فیلم فیلم) {
mov.read ()؛
}
void draw () {
تصویر (mov ، 0 ، 0 ، عرض ، ارتفاع) ؛
float newSpeed = mouseX/(float) عرض * 4؛
mov.speed (newSpeed) ؛
}
void keyPressed () {
if (key == 'p') {
mov.play ()؛
}
if (key == 's') {
mov.stop ()؛
}
if (key == 'd') {
mov.pause ()؛
}
}
[/cceN_cpp]
کد توضیح دهید:
تابع.speed () می تواند برای کنترل سرعت پخش فیلم استفاده شود. هنگامی که مقدار پارامتر 1 است ، سرعت پخش نرمال است. هنگامی که مقدار فراتر از 1 ، سپس شتاب؛ در حالی که زیر 1 است ، سپس سرعت را کاهش دهید.
از آنجا که ما متغیر محلی newSpeed را ایجاد کرده ایم و آن را در تابع setSpeed () وارد کرده ایم ، مختصات موس به طور مستقیم بر سرعت پخش ویدئو تأثیر می گذارد.
در مورد نمونه های بیشتر در مورد فیلم ، می توانید به کتابخانه ها - ویدئو در کتابخانه مورد مراجعه کنید.
مرحله 7: پردازش رویدادهای متداول
قبلاً ، ما فقط رویداد keyPressed () را معرفی کرده بودیم. بعد از فشردن صفحه کلید فعال می شود. در ادامه ، سایر رویدادهای متداول در پردازش را برای شما معرفی می کنیم.
موارد استفاده از رویدادهای فوق مشابه keyPressed است. در کد نویسی دنباله ای ندارند. به عبارت دیگر ، مهم نیست که کدام رویداد را قبل یا پشت تنظیمات عملکرد قرار داده اید ، همان نتیجه را دریافت می کنید. دستور اجرا فقط مربوط به شرایط تحریک کننده خود رویداد است. فقط در صورت برآورده شدن شرط ، اجرا می شود. درک رویدادهای بالا بسیار آسان است. فقط باید یک آزمایش کوچک انجام دهید ، سپس می توانید به سرعت کاربردهای آنها را درک کنید.
جریان رویداد
برای آگاهی از ترتیب اجرای رویدادها می توانیم از یک مثال استفاده کنیم.
مثال کد (10-5):
[cceN_cpp theme = "dawn"] void setup () {
frameRate (2) ؛
println (1) ؛
}
void draw () {
println (2) ؛
}
void mousePressed () {
println (3) ؛
}
void mouseMoved () {
println (4) ؛
}
void mouseReleased () {
println (5) ؛
}
void keyPressed () {
println (6) ؛
}
کلید خالی (منتشر شده) () {
println (7) ؛
} [/cceN_cpp]
کد توضیح دهید:
در تنظیمات عملکرد ، frameRate () سرعت عملکرد برنامه را 2 فریم در ثانیه تنظیم کرده است. کاهش نرخ فریم می تواند به ما کمک کند خروجی را در کنسول مشاهده کنیم در صورتی که رویدادهای ایجاد شده بلافاصله توسط داده های جدید به پشت منتقل شوند.
سعی کنید ماوس خود را حرکت دهید ، موس را کلیک کنید ، موس را رها کرده و نتیجه خروجی را مشاهده کنید. با دستور اجرای رویداد از طریق println آشنا شوید.
آنچه باید به آن توجه کرد این است که توابع رسم را نمی توان در رویدادهای دیگر به جز ترسیم تابع نوشت یا نمایش داد. اگر بخواهیم پنهان و نمایش اجزای گرافیکی را از طریق رویدادهایی مانند keyPressed کنترل کنیم ، ممکن است متغیر bool را به عنوان یک رسانه متوسط در نظر بگیریم.
رویدادها به ترتیب اجرا خواهند شد. تنها پس از اجرای همه کد در رویداد جاری ، کد را در رویداد بعدی اجرا می کند.
مرحله 8: مثال جامع-صفحه کلید موسیقی
با ترکیب رویدادهای تازه درک شده ، می توانیم تعاملات جدیدی را به برنامه خود اضافه کنیم. در مرحله بعد ، تنها با چند دقیقه ، می توانیم صفحه کلید موسیقی را به راحتی آنالوگ کنیم.
وب سایت ویدیویی:
مثال کد (10-6):
[cceN_cpp theme = "dawn"] import processing.sound.*؛
SoundFile sound1 ، sound2 ، sound3 ، sound4 ، sound5 ؛
کلید بولی 1 ، کلید 2 ، کلید 3 ، کلید 4 ، کلید 5 ؛
void setup () {
اندازه (640 ، 360) ؛
پس زمینه (255) ؛
noStroke ()؛
sound1 = SoundFile جدید (این ، "do.wav") ؛
sound2 = SoundFile جدید (این ، "re.wav") ؛
sound3 = SoundFile جدید (این ، "mi.wav") ؛
sound4 = SoundFile جدید (این ، "fa.wav") ؛
sound5 = SoundFile جدید (این ، "so.wav") ؛
}
void draw () {
پس زمینه (255 ، 214 ، 79) ؛
rectMode (CENTER) ؛
شناور w = عرض * 0.1 ؛
شناور h = ارتفاع * 0.8 ؛
if (key1) {
پر (255) ؛
} دیگری {
پر کنید (238 ، 145 ، 117) ؛
}
راست (عرض/6 ، ارتفاع/2 ، w ، h) ؛
if (key2) {
پر (255) ؛
} دیگری {
پر کنید (246 ، 96 ، 100) ؛
}
راست (عرض/6 * 2 ، ارتفاع/2 ، w ، h) ؛
اگر (کلید 3) {
پر (255) ؛
} دیگری {
پر کنید (214 ، 86 ، 113) ؛
}
راست (عرض/6 * 3 ، ارتفاع/2 ، w ، h) ؛
if (key4) {
پر (255) ؛
} دیگری {
پر کنید (124 ، 60 ، 131) ؛
}
راست (عرض/6 * 4 ، ارتفاع/2 ، w ، h) ؛
if (کلید 5) {
پر (255) ؛
} دیگری {
پر کنید (107 ، 27 ، 157) ؛
}
راست (عرض/6 * 5 ، ارتفاع/2 ، w ، h) ؛
}
void keyPressed () {
if (key == 'a') {
sound1.play ()؛
key1 = true؛
}
if (key == 's') {
sound2.play ()؛
key2 = true؛
}
if (key == 'd') {
sound3.play ()؛
key3 = true؛
}
if (key == 'f') {
sound4.play ()؛
key4 = true؛
}
if (key == 'g') {
sound5.play ()؛
key5 = true؛
}
}
کلید خالی (منتشر شده) () {
if (key == 'a') {
key1 = false؛
}
if (key == 's') {
key2 = false؛
}
if (key == 'd') {
key3 = false؛
}
if (key == 'f') {
key4 = false ؛
}
if (key == 'g') {
key5 = false؛
}
} [/cceN_cpp]
کد توضیح دهید:
برای خواندن اطلاعات صوتی نسبی ، باید چندین شیء صوتی ایجاد کنیم تا در صورت فعال شدن کلیدهای مختلف ، صداهای متفاوتی پخش شود.
در اینجا از یک رویداد keyReleased () جدید استفاده می کنیم. عملکرد این رویداد بازگرداندن رنگ صفحه کلید به رنگ اصلی آن است. وقتی کلید را رها می کنید ، فعال می شود.
5 مقدار بولی اعلام شده در سر برای تشخیص وضعیت کلید استفاده می شود.
مرحله 9: مثال جامع-موسیقی پالت 1
علاوه بر رویداد صفحه کلید ، رویداد ماوس چیز خوبی است که ما باید از آن به صورت انعطاف پذیر استفاده کنیم. مثال زیر برای ما ایجاد یک پالت موسیقی است که در بین آنها از دو رویداد مربوط به ماوس استفاده کرده ایم.
وب سایت ویدیویی:
مثال کد (10-7):
[cceN_cpp theme = "dawn"] import processing.sound.*؛
SoundFile sound1 ، sound2 ، sound3 ، sound4 ، sound5 ؛
boolean isDragging؛
void setup () {
اندازه (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") ؛
}
void draw () {
if (isDragging) {
پر کنید (107 ، 27 ، 157 ، 100) ؛
بیضی (mouseX ، mouseY ، 16 ، 16) ؛
}
}
void mouseDragged () {
isDragging = true؛
if (mouseX> 100 && mouseX <105) {
sound1.play ()؛
}
if (mouseX> 200 && mouseX <205) {
sound2.play ()؛
}
if (mouseX> 300 && mouseX <305) {
sound3.play ()؛
}
if (mouseX> 400 && mouseX <405) {
sound4.play ()؛
}
if (mouseX> 500 && mouseX <505) {
sound5.play ()؛
}
}
void mouseReleased () {
isDragging = false؛
} [/cceN_cpp]
کد توضیح دهید:
امیدواریم تنها زمانی که ماوس را فشار داده و آن را بکشیدیم ، بتوانیم عکس بکشیم. بنابراین ما برای بدست آوردن وضعیت فعلی باید یک متغیر بولی isDragging بسازیم.
هنگام کشیدن ماوس ، isDragging به مقدار واقعی تبدیل می شود تا توابع رسم در Draw اجرا شوند. روی صفحه اثر می گذارد. وقتی ماوس را رها می کنیم ، isDragging به مقدار کاذب تبدیل می شود. بنابراین توابع رسم در draw function اجرا را متوقف می کند.
ما چندین حالت فعال کننده در رویداد کشیدن ماوس را طراحی کرده ایم. به عنوان مثال ، وقتی مختصات افقی ماوس بین 100 و 105 پیکسل باشد ، موسیقی به طور خودکار پخش می شود. این باعث می شود صفحه چندین رشته نامرئی ایجاد شود. فقط اگر موس از مناطق خاصی عبور کند ، موسیقی نسبی را فعال می کند.
مرحله 10: مثال جامع-موسیقی پالت 2 (نسخه به روز شده)
تأثیر مثال بالا در حال حاضر به اندازه کافی خوب است. اما اگر آن را با دقت تماشا کنیم ، مشکلات زیادی پیدا خواهیم کرد. به عنوان مثال ، وقتی موس بسیار سریع حرکت می کند ، هر بار که حرکت می کند یک نقطه گرد روی صفحه باقی می گذارد. این یک خط مستقیم منسجم نیست. در همین حال ، باعث نشت موسیقی نیز می شود. در حالی که وقتی موس بسیار آهسته حرکت می کند و از موقعیتی عبور می کند که مختصات افقی بین 100 و 105 باشد ، در مدت زمان بسیار کوتاهی چندین بار موسیقی پخش می کند ، که به شما احساس گیر افتادن می دهد. همه این مشکلات را می توانیم از طریق مثال زیر حل کنیم.
در لینک زیر می توانید فیلم ها را مشاهده کنید:
v.qq.com/x/page/w03226o4y4l.html
مثال کد (10-8):
[cceN_cpp theme = "dawn"] import processing.sound.*؛
SoundFile sound1 ، sound2 ، sound3 ، sound4 ، sound5 ؛
boolean isDragging؛
void setup () {
اندازه (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") ؛
}
void draw () {
if (isDragging) {
سکته مغزی (107 ، 27 ، 157 ، 100) ؛
سکته مغزی وزن (10) ؛
خط (mouseX ، mouseY ، pmouseX ، pmouseY) ؛
}
}
void mouseDragged () {
isDragging = true؛
if ((mouseX - 100) * (pmouseX - 100) <0) {
sound1.play ()؛
}
if ((mouseX - 200) * (pmouseX - 200) <0) {
sound2.play ()؛
}
if ((mouseX - 300) * (pmouseX - 300) <0) {
sound3.play ()؛
}
if ((mouseX - 400) * (pmouseX - 400) <0) {
sound4.play ()؛
}
if ((mouseX - 500) * (pmouseX - 500) <0) {
sound5.play ()؛
}
}
void mouseReleased () {
isDragging = false؛
} [/cceN_cpp]
کد توضیح دهید:
در اینجا ما از دو متغیر pmouseX و pmouseY استفاده شده در خود سیستم پردازش استفاده کرده ایم. آنها شبیه mouseX و mouseY هستند ، اما چیزی که به دست آورده اند مختصات ماوس در آخرین فریم است.
در رسم تابع ، از خط تابع () برای جایگزینی بیضی تابع اصلی () استفاده کرده ایم. این امر مختصات آخرین قاب را مستقیماً با مختصات قاب فعلی متصل می کند. بنابراین ما می توانیم خطوط یا منحنی های مستقیم منسجم ترسیم کنیم.
در صورت mouseDragged ، ما یک حالت راه اندازی جدید طراحی کرده ایم.از طریق قضاوت در مورد اینکه آیا مختصات آخرین قاب و فریم فعلی در یک طرف قرار دارند یا خیر ، مشخص می شود که آیا از مختصات خاصی عبور کرده است یا خیر. این شرط را به عنوان مثال در نظر بگیرید: "if ((mouseX - 100) * (pmouseX - 100) <0)". در میان آن ، از مقدار مثبت و منفی حاصل از "mouseX - 100" ، می توانیم بفهمیم که mouseX در سمت راست یا چپ coodinate افقی 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: منبع
این مقاله از: https://www.elecfreaks.com/11592.html است
اگر س questionsالی دارید ، می توانید با : [email protected] تماس بگیرید.
توصیه شده:
راهنمای برنامه نویسی جالب برای طراح-تصویر خود را اجرا کنید (قسمت دوم): 8 مرحله
راهنمای برنامه نویسی جالب برای طراح-تصویر خود را اجرا کنید (قسمت دوم): برای اکثر شما ریاضی بی فایده به نظر می رسد. متداول ترین مورد در زندگی روزمره ما فقط جمع ، تفریق ، ضرب و تقسیم است. با این حال ، اگر بتوانید با برنامه ایجاد کنید ، کاملاً متفاوت است. هرچه بیشتر بدانید ، نتیجه شگفت انگیزتری خواهید داشت
راهنمای برنامه نویسی پردازش جالب برای طراح-کنترل رنگ: 10 مرحله
راهنمای برنامه نویسی پردازش جالب برای طراح-کنترل رنگ: در فصل های قبل ، ما بیشتر در مورد نحوه استفاده از کد برای انجام شکل دهی به جای نکات آگاهی در مورد رنگ صحبت کرده ایم. در این فصل ، ما قصد داریم این جنبه از دانش را عمیق تر بررسی کنیم
برنامه نویسی مبتنی بر رویداد در FTC: 4 مرحله
برنامه نویسی مبتنی بر رویداد در FTC: امسال ، تیم ما کارهای زیادی را با توسعه نرم افزار رویداد محور برای ربات ما انجام داده است. این برنامه ها به تیم این امکان را می دهد که برنامه های خود مختار و حتی رویدادهای تله اپ را تکرار کند. همانطور که نرم افزار کار می کند ،
راهنمای برنامه نویسی جالب برای طراح-کنترل فرآیند برنامه-بیانیه حلقه: 8 مرحله
راهنمای برنامه نویسی جالب برای طراح-کنترل فرآیند برنامه-بیانیه حلقه: کنترل فرآیند برنامه-بیانیه حلقه از این فصل ، شما با یک بیانیه حلقه مهم و قدرتمند دانش ارتباط خواهید داشت. قبل از خواندن این فصل ، اگر می خواهید 10000 دایره در برنامه بکشید ، فقط می توانید با یک ter
راهنمای برنامه نویسی جالب برای طراح-تصویر خود را اجرا کنید (قسمت اول): 16 مرحله
راهنمای برنامه نویسی جالب برای طراح-تصویر خود را اجرا کنید (قسمت اول): اجرا کنید! اجرا کن! اجرا کنید! برنامه نویسی چندان دشوار نیست. نکته کلیدی این است که ریتم خود را پیدا کرده و آن را یکی یکی انجام دهید. قبل از خواندن این فصل ، امیدوارم قبلاً با روش ترسیم عملکرد اصلی آشنا شده باشید ، یا دچار سرگیجه و گیجی می شوید