Мазмұны:
- 1 -қадам: суретті оқу
- 2 -қадам: Суретке қатысты функциялар
- 3 -қадам: Музыканы жүктеу, ойнату және тоқтату
- 4 -қадам: Музыка жылдамдығын басқару
- 5 -қадам: Бейнені ойнату және тоқтату
- 6 -қадам: бейне жылдамдығын басқару
- 7 -қадам: Жалпы оқиғаларды өңдеу
- 8-қадам: Кешенді мысал-музыкалық пернетақта
- 9-қадам: Кешенді мысал-Музыка палитрасы 1
- 10-қадам: Кешенді мысал-Музыка палитрасы 2 (жаңартылған нұсқа)
- 11 -қадам: Дыбыс пен бейнені басқару туралы қатысты функциялар
- 12 -қадам: Салыстырмалы көрсеткіштер:
- 13 -қадам: Дереккөз
Бейне: Дизайнер үшін қызықты бағдарламалау бойынша нұсқаулық-медианы жүктеу және оқиға: 13 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Өңдеуге көптеген сыртқы деректер жүктелуі мүмкін, олардың арасында өте жиі қолданылатын үш түрі бар. Олар бейне, аудио және бейне бөлек.
Бұл тарауда біз оқиғалармен үйлесімді түрде аудио мен бейнені қалай егжей -тегжейлі жүктеу керектігі туралы айтатын боламыз. Соңында сіз өзіңіздің музыкалық пернетақтаны немесе музыкалық палитраны жасай аласыз.
1 -қадам: суретті оқу
Бастамас бұрын, суретті жүктеу әдісіне қайта қарайық.
2 -қадам: Суретке қатысты функциялар
Бұл функцияларды қолданбас бұрын PImage арқылы кескін объектісін құру керек. Содан кейін біз бұл функцияларды кескін қасиеттерінің барлық түрлерін анықтау үшін қолдана аламыз.
Бағдарламаны іске қоспас бұрын кескін көздерін деректер файлына сақтауды ұмытпаңыз.
3 -қадам: Музыканы жүктеу, ойнату және тоқтату
Келесіде біз сізге музыканың шақырылуын ресми түрде таныстыруды бастаймыз. Кескін жүктеуге өте ұқсас, сіз алдымен дыбыстық объектіні жариялауыңыз керек. Нақты грамматикадан төмендегі мысалға жүгіне аласыз.
Код мысалы (10-1):
[cceN_cpp theme = «таң»] импорттау өңдеу.сау.*;
SoundFile дыбысы;
жарамсыз орнату () {
өлшемі (640, 360);
фон (255);
sound = new SoundFile (бұл, «1.mp3»);
}
жарамсыз ұтыс () {
}
void keyPressed () {
// Дыбысты ойнату
if (key == 'p') {
sound.play ();
}
// Дыбысты тоқтату
if (key == 's) {
sound.stop ();
}
} [/cceN_cpp]
Дайындық:
Өңдеудің өзі ешқандай дыбыстық кітапхананы қамтымайды. Сіз оны өзіңіз жүктеп алуыңыз керек. Сондықтан кодты жазбас бұрын келесі дайындықтарды жасаған жөн.
Кітапхананы өңдеуге қосыңыз. Міне, жалпы практика. Мәзір жолағынан «Құрал»- «Құрал қосу» тармағын таңдаңыз, содан кейін «Кітапханаларға» өтіңіз. Кітапхананың негізгі сөздерін іздеу бағанына енгізіңіз, сонда сіз оны жүктей және орната аласыз.
Алайда, егер біз бұл функцияны өз елімізде (Қытайда) қолданатын болсақ, біз оны тікелей желіге қосылу арқылы жүктей алмаймыз. Біз VPN іске қосуымыз керек. Біз оны бастасақ та, тұрақсыз жағдайлар болады. Сондықтан сіз оны бірнеше рет сынап көру үшін шыдамды болуыңыз керек. Бұл жүктеудің ең ыңғайлы әдісі. Егер орнату мүмкін болмаса, оны ресми сайттан қолмен жүктеу керек. (https://processing.org/reference/libraries/) Қолмен орнату әдісі өте күрделі болғандықтан, біз оны басқа тарауда талқылайтын боламыз.
Кодты түсіндіру:
Дыбыс кітапханасы дайындық аяқталғаннан кейін дұрыс жұмыс істей алады. Жоғарыдағы кодты орындап, RUN түймесін басыңыз, содан кейін ол жұмыс істейді. Музыканы ойнату үшін «P» пернесін, музыканы тоқтату үшін «S» пернесін басыңыз.
Егер ол бағдарламаға қолданылса, алдымен оны жүктеуіміз керек. Басында біз «импорттауды өңдеу. Дыбыс.» Деген сөйлемді қосуымыз керек. «импорт» - бұл жүктеуді білдіретін негізгі сөз. Кітапхана атауын «импорттаудың» артына қосыңыз, сонда ол кітапхананы жүктейді. Құйрық әдетте «*» белгісімен жүреді, осылайша ол кітапханаға қатысты барлық сабақтарды қолмен қоспай -ақ бағдарламаға жүктейді.
Екінші сөйлемде «SoundFile sound;» дыбыс объектісін жариялады. SoundFile PImage -ге ұқсас.
Функцияны орнату кезінде «sound = new SoundFile (бұл» 1.mp3 «);» объект құру және оның оқу жолын анықтау үшін қолданылады. Мұнда біз іс жүзінде Class жаңа тұжырымдамасын қолдана бастадық. Дәл қазір біз оны терең талқыламаймыз. Біз бұл тек тіркелген жазу әдісі екенін білуіміз керек және соңғы параметр - музыка көзінің мекен -жайын толтыру.
KeyPressed () оқиғаларының ішінде «sound.play ()» және «sound.stop ()» ойнау мен тоқтатудың әсері ретінде салыстырмалы түрде жұмыс істейді. «.» ортасында дыбыс объектілеріне тиесілі ойнату мен тоқтату функциясын көрсетеді. Біз мүше функциясын объектіге қосылған функция ретінде қарастыра аламыз. Ол осы объектіге жатады, ол алдын ала анықталады. Кейінірек, бізге бірнеше аудио объектілерді ойнату қажет болғанда, салыстырмалы айнымалы атаудың артына «.play ()» қосу ғана қалады.
Дыбыстық көздер деректер файлында сол эскиз файлының каталогында сақталуы тиіс (pde қосымшасы бар). Егер жоқ болса, оны қолмен жасауға болады.
Функция сызбасын жазуды ұмытпаңыз. Сіз графика салмаған болсаңыз да, музыканы сәтті ойнау қажет.
Жоғарыда көрсетілген процедура өте күрделі болып көрінеді, бірақ сізге бірнеше кодты қосу керек, сонда сіз ойнату функциясын іске асыра аласыз. Бұл өте ыңғайлы.
Өңдеу mp3, wav, ogg және т.
4 -қадам: Музыка жылдамдығын басқару
Келесі мысалдар өте қызықты бола бастайды. Өңдеу музыканың ойнау жылдамдығын басқара алатын кейбір функцияларды қамтамасыз етті. Сонымен бірге әуеннің ойнау жылдамдығына байланысты дыбыстар өзгереді. Біз тінтуірді басқару үшін қолдансақ, бұл өте психикалық әсер береді.
Бейне веб -сайт:
Код мысалы (10-2):
[cceN_cpp theme = «таң»] импорттау өңделеді. дыбыс.*;
SoundFile дыбысы;
жарамсыз орнату () {
өлшемі (640, 360);
фон (255);
sound = new SoundFile (бұл, «1.mp3»);
}
жарамсыз ұтыс () {
қалқу жылдамдығы = mouseX/(float) ені * 3;
дыбыс жылдамдығы (жылдамдық);
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 -ден төмен болса, дыбыс деңгейін төмендетіңіз.
Мұнда біз жүктелетін параметрлер ретінде жылдамдық пен көлемдік екі жергілікті айнымалыны құрдық. Тінтуірдің көлденең координаты музыканың үнін өзгертеді, ал вертикальды координатаның дыбыс деңгейі өзгереді.
5 -қадам: Бейнені ойнату және тоқтату
Өңдеу кезінде бейнені жүктеу аудио жүктеуге ұқсас. Алдымен бейне кітапхананы жүктеу керек. (https://processing.org/reference/libraries/video/index.html)
Код мысалы (10-3):
[cceN_cpp theme = «таң»] импорттау өңдеу. бейне.*;
Фильм фильмі;
жарамсыз орнату () {
өлшемі (640, 360);
фон (0);
mov = жаңа фильм (бұл, «1.mov»);
}
void movieEvent (Фильм фильмі) {
mov.read ();
}
жарамсыз ұтыс () {
сурет (mov, 0, 0, 640, 360);
}
void keyPressed () {
if (key == 'p') {
mov.play ();
}
if (key == 's) {
mov.stop ();
}
егер (кілт == 'd') {
mov.pause ();
}
} [/cceN_cpp]
Бейне скриншот:
Кодты түсіндіріңіз:
«Импортты өңдеу. Бейне.*;» Бірінші сөйлемі бейне кітапхананы жүктеу үшін қолданылады.
«Movie mov;» екінші сөйлемі бейне объектісін жариялау үшін қолданылады. Оның ішінде «Movie» функциясы PImage -ге ұқсас.
Функцияны орнатуда «mov = new Movie (this,» 1.mov «);» эффектісі - объект құру және оның оқу жолын анықтау. Соңғы параметр бейне көзінің адресімен толтырылады.
Орнату кезінде movieEvent бейне оқиғаны білдіреді. Ол бейне ақпаратты жаңарту және оқу үшін қолданылады. «mov.read ()» оқиғада оқу дегенді білдіреді.
Кескіндерді көрсетуден басқа, функционалды кескін бейнені де көрсете алады. Біз бейне нысанды динамикалық сурет ретінде қарастыра аламыз. Бірінші параметр, біз бейне объектінің айнымалы атын толтырамыз. Екінші және үшінші параметрлер - бұл бейне арқылы түсірілген көлденең және тік координаталар. Төртінші және бесінші параметрлер бейне көрсетудің ұзындығы мен енін анықтайды.
. Play () функциясы ойнауды білдіреді.. Stop () функциясы тоқтатуды білдіреді және ол бейнені қалпына келтіреді.. Pause () функциясы кідіртуді білдіреді. Ол.play () функциясы шақырылғанға дейін жалғасатын ағымдағы ойнатуды үзеді.
6 -қадам: бейне жылдамдығын басқару
Код мысалы (10-4):
[cceN_cpp theme = «таң»] импорттау өңдеу. бейне.*;
Фильм фильмі;
жарамсыз орнату () {
өлшемі (640, 360);
фон (0);
mov = жаңа фильм (бұл, «transit.mov»);
}
void movieEvent (Фильм фильмі) {
mov.read ();
}
жарамсыз ұтыс () {
сурет (mov, 0, 0, ені, биіктігі);
float newSpeed = mouseX/(float) ені * 4;
mov.speed (newSpeed);
}
void keyPressed () {
if (key == 'p') {
mov.play ();
}
if (key == 's) {
mov.stop ();
}
егер (кілт == 'd') {
mov.pause ();
}
}
[/cceN_cpp]
Кодты түсіндіріңіз:
. Speed () функциясын бейнені ойнату жылдамдығын басқару үшін пайдалануға болады. Параметр мәні 1 болғанда, ойнау жылдамдығы қалыпты болады. Мән 1 -ден жоғары болғанда, жылдамдатыңыз; 1 -ден төмен болса, содан кейін баяулаңыз.
Біз newSpeed жергілікті айнымалысын құрып, оны setSpeed () функциясына импорттағандықтан, тышқанның координаты бейне ойнату жылдамдығына тікелей әсер етеді.
Бейне туралы қосымша мысалдарға келсек, кітапхана кітапханасындағы Кітапханалар - Бейне бөліміне жүгіне аласыз.
7 -қадам: Жалпы оқиғаларды өңдеу
Бұған дейін біз keyPressed () оқиғасын ғана енгіздік. Ол пернетақта басылғаннан кейін іске қосылады. Келесіде біз сіздерге «Өңдеу» бағдарламасында басқа да ортақ оқиғаларды енгіземіз.
Жоғарыда аталған оқиғалардың қолданылуы keyPressed -ге ұқсас. Оларда код жазуда реттілік жоқ. Басқаша айтқанда, сіз функцияны орнатудың алдында немесе артында қандай оқиғаны қойсаңыз да, сіз бірдей нәтиже аласыз. Орындау тәртібі тек оқиғаның триггерлік жағдайына байланысты. Егер шарт орындалса ғана ол орындалады. Жоғарыдағы оқиғаларды түсіну өте оңай. Сізге кішкене эксперимент жасау керек, содан кейін сіз олардың қолданылуын тез түсінесіз.
Оқиға ағыны
Оқиғалардың орындалу ретін білу үшін мысал келтіре аламыз.
Код мысалы (10-5):
[cceN_cpp theme = «таң»] жарамсыз орнату () {
frameRate (2);
println (1);
}
жарамсыз ұтыс () {
println (2);
}
жарамсыз тышқан Pressed () {
println (3);
}
жарамсыз mouseMoved () {
println (4);
}
жарамсыз тышқанReleased () {
println (5);
}
void keyPressed () {
println (6);
}
void keyReleased () {
println (7);
} [/cceN_cpp]
Кодты түсіндіріңіз:
Функцияны орнатуда, frameRate () функциясы бағдарламаның жұмыс жылдамдығын секундына 2 кадр етіп орнатады. Жақтау жиілігін төмендету консольдегі шығуды бақылауға көмектеседі, егер іске қосылған оқиғалар дереу жаңа деректермен жойылса.
Тінтуірді жылжытуға тырысыңыз, тышқанды шертіңіз, тышқанды босатыңыз және шығыс нәтижесін бақылаңыз. Println арқылы оқиғаның орындалу тәртібімен танысыңыз.
Назар аударуға тұрарлық нәрсе - бұл функцияларды сурет салу функциясын қоспағанда, басқа оқиғаларға жазуға болмайды немесе көрсете алмайды. Егер біз keyPressed сияқты оқиғалар арқылы графикалық компоненттерді жасыруды және көрсетуді басқарғымыз келсе, bool айнымалысын орта ретінде құруды қарастыруымыз мүмкін.
Оқиғалар ретімен орындалады. Ағымдағы оқиғаның барлық кодтары орындалғаннан кейін ғана ол келесі жағдайда кодты орындайды.
8-қадам: Кешенді мысал-музыкалық пернетақта
Жаңадан қабылданған оқиғалармен бірге біз өз бағдарламамызға жаңа өзара әрекеттесулерді қоса аламыз. Әрі қарай, бірнеше минут ішінде біз музыкалық пернетақтаны оңай аналогтай аламыз.
Бейне веб -сайт:
Код мысалы (10-6):
[cceN_cpp theme = «таң»] импорттау өңдеу.сау.*;
SoundFile дыбысы1, дыбыс2, дыбыс3, дыбыс4, дыбыс5;
логикалық кілт1, перне2, перне3, перне4, перне5;
жарамсыз орнату () {
өлшемі (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 (ЦЕНТР);
қалқыма w = ені * 0.1;
float h = биіктігі * 0,8;
if (key1) {
толтыру (255);
} басқа {
толтыру (238, 145, 117);
}
тік (ені/6, биіктігі/2, б, сағ);
if (key2) {
толтыру (255);
} басқа {
толтыру (246, 96, 100);
}
тік (ені/6 * 2, биіктігі/2, б, сағ);
if (key3) {
толтыру (255);
} басқа {
толтыру (214, 86, 113);
}
тік (ені/6 * 3, биіктігі/2, б, сағ);
if (key4) {
толтыру (255);
} басқа {
толтыру (124, 60, 131);
}
тік (ені/6 * 4, биіктігі/2, б, сағ);
if (key5) {
толтыру (255);
} басқа {
толтыру (107, 27, 157);
}
тік (ені/6 * 5, биіктігі/2, б, сағ);
}
void keyPressed () {
if (key == 'a') {
sound1.play ();
key1 = ақиқат;
}
if (key == 's) {
sound2.play ();
key2 = ақиқат;
}
егер (кілт == 'd') {
sound3.play ();
key3 = ақиқат;
}
if (key == 'f') {
sound4.play ();
key4 = ақиқат;
}
егер (кілт == 'g') {
sound5.play ();
key5 = ақиқат;
}
}
void keyReleased () {
егер (кілт == 'a') {
key1 = жалған;
}
if (key == 's) {
key2 = жалған;
}
егер (кілт == 'd') {
key3 = жалған;
}
if (key == 'f') {
key4 = жалған;
}
егер (кілт == 'g') {
key5 = жалған;
}
} [/cceN_cpp]
Кодты түсіндіріңіз:
Біз әр түрлі пернелер қосылған кезде әр түрлі дыбыстарды ойнату үшін салыстырмалы дыбыстық ақпаратты оқу үшін бірнеше аудио объектілерді жасауымыз керек.
Мұнда біз жаңа оқиға keyReleased () қолданамыз. Бұл оқиғаның міндеті - пернетақта түсін бастапқы түсіне қайтару. Кілтті босатқан кезде ол іске қосылады.
Баста жарияланған 5 логикалық мән кілт күйін анықтау үшін қолданылады.
9-қадам: Кешенді мысал-Музыка палитрасы 1
Пернетақта оқиғасынан басқа, тінтуір оқиғасы - бұл оны икемді пайдалану керек. Келесі мысал - біз музыкалық палитраны құрамыз, оның ішінде біз тышқанмен байланысты екі оқиғаны қолдандық.
Бейне веб -сайт:
Код мысалы (10-7):
[cceN_cpp theme = «таң»] импорттау өңдеу.сау.*;
SoundFile дыбысы1, дыбыс2, дыбыс3, дыбыс4, дыбыс5;
boolean isDragging;
жарамсыз орнату () {
өлшемі (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»);
}
жарамсыз ұтыс () {
if (isDragging) {
толтыру (107, 27, 157, 100);
эллипс (mouseX, mouseY, 16, 16);
}
}
void mouseDragged () {
isDragging = ақиқат;
if (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 ();
}
}
жарамсыз тышқанReleased () {
isDragging = жалған;
} [/cceN_cpp]
Кодты түсіндіріңіз:
Біз тышқанды басып, сүйрегенде ғана суреттер сала аламыз деп үміттенеміз. Сондықтан ағымдағы күйді алу үшін isDragging логикалық айнымалысын құру керек.
Тінтуірді сүйрегенде, isDragging шын мәніне айналады, осылайша Draw ішіндегі сурет салу функциялары орындалады. Ол экранда із қалдырады. Тінтуірді жібергенде, isDragging жалған мәнге айналады. Сонымен, Draw Draw функциясының функциялары орындалуды тоқтатады.
Біз тінтуірді жылжыту жағдайында бірнеше іске қосу шарттарын жасадық. Мысалы, тінтуірдің көлденең координаты 100 және 105 пиксель аралығында болғанда, музыка автоматты түрде ойнатылады. Бұл экранды бірнеше көрінбейтін жолдар жасауға мәжбүр етеді. Тек тінтуір белгілі бір аймақтардан өтсе, ол салыстырмалы музыканы тудырады.
10-қадам: Кешенді мысал-Музыка палитрасы 2 (жаңартылған нұсқа)
Жоғарыда келтірілген мысалдың әсері жеткілікті жақсы. Бірақ егер біз оны мұқият бақылайтын болсақ, онда біз көптеген мәселелерді таба аламыз. Мысалы, тінтуір өте жылдам қозғалғанда, ол жылжытқан сайын экранда дөңгелек нүкте қалдырады. Бұл біркелкі түзу емес. Сонымен қатар, бұл музыканың ағып кетуіне әкеледі. Тінтуір өте баяу қозғалса, көлденең координата 100 мен 105 аралығында болса, ол қысқа уақыт ішінде бірнеше рет музыка таратады, бұл сізге кептеліп қалу сезімін береді. Бұл мәселелердің барлығын біз төмендегі мысал арқылы шеше аламыз.
Видеоларды төмендегі сілтемеден қарай аласыздар:
v.qq.com/x/page/w03226o4y4l.html
Код мысалы (10-8):
[cceN_cpp theme = «таң»] импорттау өңдеу.сау.*;
SoundFile дыбысы1, дыбыс2, дыбыс3, дыбыс4, дыбыс5;
boolean isDragging;
жарамсыз орнату () {
өлшемі (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»);
}
жарамсыз ұтыс () {
if (isDragging) {
инсульт (107, 27, 157, 100);
инсульт салмағы (10);
сызық (mouseX, mouseY, pmouseX, pmouseY);
}
}
void mouseDragged () {
isDragging = ақиқат;
егер ((mouseX - 100) * (pmouseX - 100) <0) {
sound1.play ();
}
if ((mouseX - 200) * (pmouseX - 200) <0) {
sound2.play ();
}
if ((mouseX - 300) * (pmouseX - 300) <0) {
sound3.play ();
}
егер ((mouseX - 400) * (pmouseX - 400) <0) {
sound4.play ();
}
егер ((mouseX - 500) * (pmouseX - 500) <0) {
sound5.play ();
}
}
жарамсыз тышқанReleased () {
isDragging = жалған;
} [/cceN_cpp]
Кодты түсіндіріңіз:
Мұнда біз өңдеу жүйесінде тасымалданатын pmouseX және pmouseY екі айнымалысын қолдандық. Олар mouseX пен mouseY -ге ұқсас, бірақ олар соңғы кадрдағы тышқанның координаты.
Функцияның тартылуында біз эллипсті () бастапқы функциясын ауыстыру үшін функционалдық сызықты () қолдандық. Бұл соңғы кадрдың координатасын ағымдағы кадрдың координатымен тікелей байланыстырады. Осылайша, біз когерентті түзулер немесе қисықтар жүргізе аламыз.
MouseDragged жағдайында біз жаңа триггерлік жағдайды жасадық. Белгілі бір координатаның қиылысқанын білу үшін соңғы кадр мен ағымдағы кадрдың координатасы бір жақта тұрғанын анықтау арқылы. Мысал ретінде мына шартты алыңыз: «if ((mouseX - 100) * (pmouseX - 100) <0)». Оның ішінде «mouseX - 100» нәтижесінен алынған оң және теріс мәннен біз mouseX көлденең координатаның 100 оң немесе сол жағында екенін біле аламыз. Сол сияқты «pmouseX - 100». Сондықтан, алдыңғы және артқы екі нүкте бір жақта болмаған кезде, оң теріс көбейтеді, ол жаңа теріс санды алады. Осылайша орындалу шарты орындалады.
Жоғарыда белгілі бір математикалық алгоритмді ақылды түрде қолданған жеңілдетілген өрнек берілген-Екі теріс көбейту оң нәтиже береді. Бөлек талқылау үшін оны екі жағдайға бөлуге болады. Алайда, үкім шығару шарттарын жазу әлдеқайда күрделі. «Егер ((mouseX = 100) || (mouseX> 100 && pmouseX <= 100)))» үкімінің шарттары бастапқы кодты анықтайтын шарттарға тең.
11 -қадам: Дыбыс пен бейнені басқару туралы қатысты функциялар
Жоғарыда аталған функциялар жалпы пайдалану сценарийлері үшін жеткілікті. Егер сіз оны тереңірек зерттегіңіз келсе, мұнда мен сізге аудио мен видеоға қатысты жалпы функцияларды жинадым. Сіз оны өз қажеттіліктеріңізге сәйкес зерттей аласыз.
Қосымша ақпарат алу үшін ресми веб -сайттың құжаттарына жүгіне аласыз.
Аудио (https://processing.org/reference/libraries/sound/index.html)
Бейне (https://processing.org/reference/libraries/video/index.html)
Бұл мақала дизайнер Вензиден келеді.
12 -қадам: Салыстырмалы көрсеткіштер:
Дизайнер үшін қызықты бағдарламалау нұсқаулығы-бастапқы сенсорды өңдеу
Дизайнерге арналған қызықты бағдарламалау нұсқаулығы - алғашқы өңдеу бағдарламасын жасаңыз
Дизайнерге арналған бағдарламалау бойынша қызықты нұсқаулық-суретті іске қосыңыз (бірінші бөлім)
Дизайнерге арналған бағдарламалау бойынша қызықты нұсқаулық-суретті іске қосыңыз (екінші бөлім)
Дизайнерге арналған қызықты бағдарламалау нұсқаулығы- Бағдарламалық процесті басқару- Цикл туралы мәлімдеме
Дизайнер үшін қызықты бағдарламалау нұсқаулығы-Бағдарламалық процесті бақылау-Шарт туралы мәлімдеме (Бірінші бөлім)
Дизайнерге арналған қызықты бағдарламалау нұсқаулығы-Бағдарламалық процесті бақылау-Шарт туралы мәлімдеме (Екінші бөлім)
Дизайнерге арналған қызықты бағдарламалау нұсқаулығы-реттелетін функциялар мен фракталдық рекурсия
Дизайнерге арналған қызықты бағдарламалау нұсқаулығы-реттелетін функциялар мен фракталдық рекурсия
Дизайнер үшін өңдеуге арналған қызықты нұсқаулық-Түсті басқару
13 -қадам: Дереккөз
Бұл мақала:
Егер сізде сұрақтар туындаса, мына мекенжайға хабарласа аласыз: [email protected].
Ұсынылған:
РЕО бойынша жоғары жылдамдықты жүктеу мен OKAY ағыны үшін VPN премиум орнату нұсқаулығы: 10 қадам
Жоғары жылдамдықты жүктеу мен OKAY ағыны үшін VPN премиум орнату нұсқаулығы: REO арқылы рахмет: Asuswrt-MerlinHi, мен Тайландтанмын. Мен орташа жылдамдығы 100 Мб/сағ айналасында жоғары жылдамдықты жүктеу үшін VPN егжей-тегжейлі орнату нұсқаулығын жазамын және Netflix, Crunchyroll, Hulu және т.б. үшін ең ыңғайлы ағын болуы мүмкін, Таиландтан
DIY осциллографтар жинағы - құрастыру және ақаулықтарды жою бойынша нұсқаулық: 10 қадам (суреттермен)
DIY осциллографтар жинағы - құрастыру және ақаулықтарды жою бойынша нұсқаулық: Электронды гаджетті жобалау кезінде маған электр сигналдарының болуын және формасын бақылау үшін осциллограф қажет. Осы уақытқа дейін мен ескі кеңестік (1988 ж.) Бір каналды аналогты CRT осциллографын қолдандым. Ол әлі де функционалды
MPU6050 орнату және калибрлеу бойынша нұсқаулық: 3 қадам
MPU6050 баптау және калибрлеу бойынша нұсқаулық: MPU6050 - инерциалды өлшеу бірлігін білдіретін 6 DoF (еркіндік дәрежесі) IMU, 3 осьті гироскоп арқылы бұрыштық үдеу мен сызықтық үдеткіштер арқылы сызықтық үдеуді білетін өте жақсы сенсор. Бұл кейде қиын болуы мүмкін дейін
Дөңгелекті креслолардың орталыққа бекітілген тіректерін көтеру/түсіру үшін слайд дизайнының макетін аяқтау бойынша нұсқаулық: 9 қадам (суреттермен)
Дөңгелекті креслоларға орталықтан бекітілген тіректерді көтеру/түсіру үшін слайд-конструкцияның макетін аяқтау бойынша нұсқаулық: Ортаға бекітілген тіректерді орындықтың астына қоюға болады, ал төменге қарай орналастыру керек. Таяқтарды орналастыру мен орналастырудың тәуелсіз жұмыс механизмі нарықтық дөңгелектерге арналған креслоларға кірмейді, ал PWC пайдаланушылары қажеттілікті білдірді
Дизайнерге арналған бағдарламалау бойынша қызықты нұсқаулық-суретті іске қосыңыз (бірінші бөлім): 16 қадам
Дизайнерге арналған қызықты бағдарламалау нұсқаулығы-суретті іске қосыңыз (бірінші бөлім): жүгіріңіз! Жүгір! Бағдарламалау - қиын емес. Ең бастысы - сіздің ырғағыңызды тауып, оны бір -бірлеп жасау. Бұл тарауды оқымас бұрын, сіз сурет салудың негізгі әдісімен таныссыз деп үміттенемін, немесе сіз бас айналасыз және шатасасыз