Բովանդակություն:
- Քայլ 1: Կարդացեք պատկերը
- Քայլ 2: Պատկերի հետ կապված գործառույթներ
- Քայլ 3: Երաժշտության բեռնում, նվագարկում և դադարեցում
- Քայլ 4: Երաժշտության արագության վերահսկում
- Քայլ 5: Տեսանյութի նվագարկում և դադարեցում
- Քայլ 6: Տեսանյութի արագության վերահսկում
- Քայլ 7: Ընդհանուր իրադարձությունների մշակում
- Քայլ 8. Համապարփակ օրինակ-Երաժշտության ստեղնաշար
- Քայլ 9. Համապարփակ օրինակ-Երաժշտական ներկապնակ 1
- Քայլ 10: Համապարփակ օրինակ-Երաժշտական ներկապնակ 2 (թարմացված տարբերակ)
- Քայլ 11: Աուդիո և վիդեո կառավարման մասին հարաբերական գործառույթներ
- Քայլ 12: Հարաբերական ընթերցումներ
- Քայլ 13: Աղբյուր
Video: Processրագրավորման մշակման հետաքրքիր ուղեցույց դիզայների համար. MediaԼՄ-ների բեռնում և իրադարձություն. 13 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Մշակումը կարող է բեռնվել բազմաթիվ արտաքին տվյալների, որոնցից երեքը շատ հաճախ օգտագործվում են: Դրանք առանձին են `պատկեր, աուդիո և վիդեո:
Այս գլխում մենք խոսելու ենք այն մասին, թե ինչպես կարելի է մանրամասն բեռնել աուդիո և վիդեո ՝ համատեղելով իրադարձությունների հետ: Ի վերջո, դուք կարող եք ստեղծել ձեր սեփական երաժշտական ստեղնաշարը կամ երաժշտական պալիտրա:
Քայլ 1: Կարդացեք պատկերը
Նախքան սկսելը, եկեք հետ նայենք պատկերի բեռնման եղանակին:
Քայլ 2: Պատկերի հետ կապված գործառույթներ
Այս գործառույթներից օգտվելուց առաջ մենք պետք է PImage- ի միջոցով ստեղծենք պատկերի օբյեկտ: Այնուհետեւ մենք կարող ենք օգտագործել այս գործառույթները `բոլոր տեսակի պատկերի հատկությունները սահմանելու համար:
Մի մոռացեք ձեր պատկերի աղբյուրները տվյալների ֆայլում պահել նախքան ձեր ծրագիրը գործարկելը:
Քայլ 3: Երաժշտության բեռնում, նվագարկում և դադարեցում
Ստորև ՝ մենք սկսում ենք ձեզ պաշտոնապես ներկայացնել երաժշտության կոչը: Շատ նման է պատկերի բեռնումին, սկզբում պետք է հայտարարեք աուդիո օբյեկտ: Ստորև բերված օրինակին կարող եք անդրադառնալ իրական քերականությունից:
Կոդի օրինակ (10-1):
[cceN_cpp theme = "dawn"] ներմուծում processing.sound.*;
SoundFile ձայն;
void setup () {
չափը (640, 360);
ֆոն (255);
ձայն = նոր SoundFile (սա, "1.mp3");
}
դատարկ վիճակահանություն () {
}
void keyPressed () {
// Նվագարկել ձայնը
եթե (բանալին == '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 () »հարաբերական փոփոխականի անվան հետևում:
Աուդիո աղբյուրները պետք է պահվեն տվյալների ֆայլում `sketchfile- ի նույն կատալոգի ներքո (pde ածանցով): Եթե չկա, կարող եք ձեռքով ստեղծել մեկը:
Մի մոռացեք գրել ֆունկցիայի նկարչություն: Չնայած որ դուք ոչ մի գրաֆիկա չեք նկարել, սակայն անհրաժեշտ է հաջողությամբ նվագել երաժշտություն:
Վերոնշյալ ընթացակարգը բավականին բարդ է թվում, բայց անհրաժեշտ է ավելացնել միայն մի քանի նախադասություն ծածկագիր, այնուհետև կարող եք իրականացնել խաղալու գործառույթը: Շատ հարմար է:
Մշակումը ապահովում է սովորական աուդիո ձևաչափեր, ինչպիսիք են mp3, wav, ogg և այլն:
Քայլ 4: Երաժշտության արագության վերահսկում
Հետևյալ օրինակները կսկսեն դառնալ շատ հետաքրքիր: Մշակումը ապահովել է որոշ գործառույթներ, որոնք կարող են վերահսկել երաժշտության նվագարկման արագությունը: Միևնույն ժամանակ, հնչյունները կփոխվեն երաժշտության նվագարկման արագությամբ: Երբ մենք օգտագործում ենք մկնիկը վերահսկելու համար, այն կստեղծի շատ հոգեբանական ազդեցություն:
Տեսանյութի կայք ՝
Կոդի օրինակ (10-2):
[cceN_cpp theme = "dawn"] ներմուծում processing.sound.*;
SoundFile ձայն;
void setup () {
չափը (640, 360);
ֆոն (255);
ձայն = նոր SoundFile (սա, "1.mp3");
}
դատարկ վիճակահանություն () {
բոց արագություն = mouseX/(բոց) լայնություն * 3;
ձայն. տոկոսադրույք (արագություն);
float vol = mouseY/(float) բարձրություն * 4;
sound.amp (հատոր);
}
void keyPressed () {
// Ձայն նվագել
եթե (բանալին == '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 = "dawn"] ներմուծում processing.video.*;
Ֆիլմերի շարժում;
void setup () {
չափը (640, 360);
ֆոն (0);
mov = նոր Ֆիլմ (սա, «1.mov»);
}
void movieEvent (Ֆիլմի ֆիլմ) {
mov.read ();
}
դատարկ վիճակահանություն () {
պատկեր (շարժական, 0, 0, 640, 360);
}
void keyPressed () {
եթե (բանալին == 'p') {
mov.play ();
}
if (key == 's') {
mov.stop ();
}
եթե (բանալին == 'դ') {
mov.pause ();
}
} [/cceN_cpp]
Տեսանյութի սքրինշոթ.
Կոդ Բացատրեք.
Առաջին ներդիրը «ներմուծում մշակման. Տեսանյութ.*;» Օգտագործվում է տեսադարան գրադարան բեռնելու համար:
Երկրորդ նախադասությունը ՝ «Movie mov;», օգտագործվում է վիդեո օբյեկտ հայտարարելու համար: Դրա մեջ «Ֆիլմի» գործառույթը նման է PImage- ին:
Ֆունկցիայի կարգավորման դեպքում «mov = new Movie (սա,« 1.mov »);» -ի ազդեցությունն է ստեղծել օբյեկտ և սահմանել դրա ընթերցման ուղին: Վերջին պարամետրը պետք է լրացվի տեսանյութի աղբյուրի հասցեով:
Behine- ի տեղադրում, movieEvent- ը ներկայացնում է վիդեո իրադարձություն: Այն օգտագործվում է տեսանյութի տեղեկատվությունը թարմացնելու և կարդալու համար: «mov.read ()» իրադարձության դեպքում նշանակում է կարդալ:
Բացառությամբ պատկերների ցուցադրման, գործառական պատկերը կարող է նաև տեսանյութեր ցուցադրել: Մենք կարող ենք վիդեո օբյեկտը դիտարկել որպես դինամիկ պատկեր: Առաջին պարամետրը մենք լրացնում ենք տեսանյութի օբյեկտի փոփոխականի անունը: Երկրորդ և երրորդ պարամետրերն են տեսանյութով գծված հորիզոնական և ուղղահայաց կոորդինատները: Չորրորդ և հինգերորդ պարամետրերը որոշում են տեսանյութի ցուցադրման երկարությունը և լայնությունը:
Ֆունկցիա.խաղ () նշանակում է խաղ:. Stop () գործառույթը նշանակում է կանգ առնել, և այն կվերականգնի տեսանյութը: Ֆունկցիա.pause () նշանակում է դադար: Այն կդադարեցնի ընթացիկ խաղը, որը կշարունակվի մինչև.play () գործառույթը չկանչվի:
Քայլ 6: Տեսանյութի արագության վերահսկում
Կոդի օրինակ (10-4):
[cceN_cpp theme = "dawn"] ներմուծում processing.video.*;
Ֆիլմերի շարժում;
void setup () {
չափը (640, 360);
ֆոն (0);
mov = նոր Ֆիլմ (սա ՝ «transit.mov»);
}
void movieEvent (Ֆիլմի ֆիլմ) {
mov.read ();
}
դատարկ վիճակահանություն () {
պատկեր (շարժական, 0, 0, լայնություն, բարձրություն);
float newSpeed = mouseX/(float) լայնություն * 4;
mov.speed (newSpeed);
}
void keyPressed () {
եթե (բանալին == 'p') {
mov.play ();
}
if (key == 's') {
mov.stop ();
}
եթե (բանալին == 'դ') {
mov.pause ();
}
}
[/cceN_cpp]
Կոդ Բացատրեք.
. Speed () գործառույթը կարող է օգտագործվել տեսահոլովակի նվագարկման արագությունը վերահսկելու համար: Երբ պարամետրի արժեքը 1 է, նվագարկման արագությունը նորմալ է: Երբ արժեքը գերազանցում է 1 -ը, ապա արագանում; մինչ այն 1 -ի տակ է, ապա դանդաղեցրեք:
Քանի որ մենք կառուցել ենք newSpeed տեղական փոփոխական և ներմուծել այն setSpeed () ֆունկցիայի մեջ, մկնիկի կոորդինատը ուղղակիորեն կազդի տեսանյութի նվագարկման արագության վրա:
Ինչ վերաբերում է տեսանյութերի մասին ավելի շատ օրինակներին, ապա կարող եք անդրադառնալ Գրադարաններ.
Քայլ 7: Ընդհանուր իրադարձությունների մշակում
Նախկինում մենք ներկայացրել էինք միայն keyPpress () իրադարձությունը: Այն կաշխատեցվի ստեղնաշարը սեղմելուց հետո: Ստորև մենք ձեզ համար կներկայացնենք մշակման այլ սովորական իրադարձություններ:
Վերոնշյալ իրադարձությունների օգտագործումը նման է keyPpress- ին: Նրանք կոդ գրելու հաջորդականություն չունեն: Այլ կերպ ասած, անկախ նրանից, թե որ իրադարձությունն եք տեղադրել գործառույթի կարգավորումից առաջ կամ հետևում, դուք ստանում եք նույն արդյունքը: Կատարման հրամանը կապված է միայն բուն իրադարձության հրահրող վիճակի հետ: Միայն եթե պայմանը բավարարվի, ապա այն կկատարվի: Վերոնշյալ իրադարձությունները բոլորը շատ հեշտ է հասկանալ: Պարզապես պետք է մի փոքր փորձ անել, այնուհետև կարող եք արագ ընկալել դրանց օգտագործումը:
Իրադարձությունների հոսք
Մենք կարող ենք օրինակ օգտագործել ՝ իրադարձությունների կատարման կարգը իմանալու համար:
Կոդի օրինակ (10-5):
[cceN_cpp theme = "լուսաբաց"] անվավեր կարգավորում () {
frameRate (2);
println (1);
}
դատարկ վիճակահանություն () {
println (2);
}
void mousePressed () {
println (3);
}
դատարկ մուկՇարժվեց () {
տպագիր (4);
}
void mouseReleased () {
տպագիր (5);
}
void keyPressed () {
տպագիր (6);
}
դատարկ բանալին Թողարկվեց () {
տպագիր (7);
} [/cceN_cpp]
Կոդ Բացատրեք.
Ֆունկցիայի կարգավորման ժամանակ functionRR () գործառույթը սահմանել է ծրագրի աշխատանքի արագությունը 2 կադր վայրկյանում: Շրջանակի արագության իջեցումը կարող է օգնել մեզ դիտել մխիթարելում թողարկված ելքը այն դեպքում, երբ գործարկվող իրադարձություններն անմիջապես նոր տվյալներով կհետևեն հետևի կողմին:
Փորձեք տեղափոխել մկնիկը, սեղմել մկնիկը, բաց թողնել մկնիկը և դիտել արդյունքի արդյունքը: Printանոթացեք իրադարձության կատարման կարգին println- ի միջոցով:
Այն, ինչ արժե ուշադրություն դարձնել, այն է, որ գծագրման գործառույթները չեն կարող գրվել այլ իրադարձությունների մեջ, բացառությամբ գործառույթի գծագրի, կամ այն չի կարող ցուցադրվել: Եթե մենք ցանկանում ենք վերահսկել գրաֆիկական բաղադրիչների թաքցնելը և ցուցադրումը այնպիսի իրադարձությունների միջոցով, ինչպիսիք են keyPpress- ը, կարող ենք համարել bool փոփոխականի կառուցումը որպես միջին:
Իրադարձությունները կընթանան ըստ հերթականության: Միայն ընթացիկ իրադարձության բոլոր ծածկագրերի ներդրումից հետո այն կիրականացնի հաջորդ իրադարձության դեպքում:
Քայլ 8. Համապարփակ օրինակ-Երաժշտության ստեղնաշար
Նոր իրադարձությունների հետ համատեղ, մենք կարող ենք նոր փոխազդեցություններ ավելացնել մեր ծրագրին: Հաջորդը, ընդամենը մի քանի րոպեի ընթացքում մենք կարող ենք հեշտությամբ անալոգավորել երաժշտական ստեղնաշարը:
Տեսանյութի կայք ՝
Կոդի օրինակ (10-6):
[cceN_cpp theme = "dawn"] ներմուծում 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»);
}
դատարկ վիճակահանություն () {
ֆոն (255, 214, 79);
rectMode (CENTER);
բոց w = լայնություն * 0.1;
բոց h = բարձրություն * 0.8;
եթե (բանալի 1) {
լրացնել (255);
} ուրիշ {
լրացնել (238, 145, 117);
}
ուղիղ (լայնություն/6, բարձրություն/2, w, ժ);
եթե (բանալին 2) {
լրացնել (255);
} ուրիշ {
լրացնել (246, 96, 100);
}
ուղիղ (լայնություն/6 * 2, բարձրություն/2, w, ժ);
եթե (բանալին 3) {
լրացնել (255);
} ուրիշ {
լրացնել (214, 86, 113);
}
ուղիղ (լայնություն/6 * 3, բարձրություն/2, w, ժ);
եթե (բանալին 4) {
լրացնել (255);
} ուրիշ {
լրացնել (124, 60, 131);
}
ուղիղ (լայնություն/6 * 4, բարձրություն/2, w, ժ);
եթե (բանալի 5) {
լրացնել (255);
} ուրիշ {
լրացնել (107, 27, 157);
}
ուղիղ (լայնություն/6 * 5, բարձրություն/2, w, ժ);
}
void keyPressed () {
if (key == 'a') {
sound1.play ();
բանալի 1 = ճշմարիտ;
}
if (key == 's') {
sound2.play ();
բանալի 2 = ճշմարիտ;
}
եթե (բանալին == 'դ') {
sound3.play ();
բանալի 3 = ճշմարիտ;
}
if (key == 'f') {
sound4.play ();
key4 = ճշմարիտ;
}
եթե (բանալին == 'g') {
sound5.play ();
key5 = ճշմարիտ;
}
}
դատարկ բանալին Թողարկվեց () {
եթե (բանալին == 'ա') {
բանալի 1 = կեղծ;
}
if (key == 's') {
բանալի 2 = կեղծ;
}
եթե (բանալին == 'դ') {
բանալի 3 = կեղծ;
}
if (key == 'f') {
key4 = կեղծ;
}
եթե (բանալին == 'g') {
key5 = կեղծ;
}
} [/cceN_cpp]
Կոդ Բացատրեք.
Մենք պետք է ստեղծենք բազմաթիվ աուդիո օբյեկտներ `ձայնի հարաբերական տեղեկատվությունը կարդալու համար, որպեսզի տարբեր ստեղներ գործարկելիս հնչեն տարբեր հնչյուններ:
Այստեղ մենք օգտագործում ենք նոր իրադարձության keyReleased (): Այս միջոցառման գործառույթն է վերականգնել ստեղնաշարի գույնը իր սկզբնական գույնին: Բանալին բաց թողնելիս այն կաշխատեցվի:
Գլխում հայտարարված 5 բուլյան արժեքները օգտագործվում են բանալու կարգավիճակը հայտնաբերելու համար:
Քայլ 9. Համապարփակ օրինակ-Երաժշտական ներկապնակ 1
Բացի ստեղնաշարի իրադարձությունից, մկնիկի իրադարձությունը լավ բան է, որ մենք պետք է այն ճկուն օգտագործենք: Ստորև բերված օրինակը մեզ համար երաժշտական ներկապնակ ստեղծելու համար է, որոնց թվում մենք օգտագործել ենք մկնիկի հետ կապված երկու իրադարձություն:
Տեսանյութի կայք ՝
Կոդի օրինակ (10-7):
[cceN_cpp theme = "dawn"] ներմուծում processing.sound.*;
SoundFile sound1, sound2, sound3, sound4, sound5;
բուլյան 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»);
}
դատարկ վիճակահանություն () {
եթե (isDragging) {
լրացնել (107, 27, 157, 100);
էլիպս (mouseX, mouseY, 16, 16);
}
}
void mouseDragged () {
isDragging = ճշմարիտ;
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 = կեղծ;
} [/cceN_cpp]
Կոդ Բացատրեք.
Հուսով ենք, որ միայն երբ սեղմում ենք մկնիկը և քարշ տալիս այն, կարող ենք նկարել նկարներ: Այսպիսով, մենք պետք է կառուցենք բուլյան isDragging փոփոխականը ՝ ընթացիկ կարգավիճակը ստանալու համար:
Մկնիկը քաշելիս, isDragging- ը դառնում է իրական արժեք, որպեսզի Draw- ի գծագրման գործառույթները կատարվեն: Այն հետքեր կթողնի էկրանին: Երբ մկնիկը բաց ենք թողնում, isDragging- ը դառնում է կեղծ արժեք: Այսպիսով, գծագրման գործառույթները ֆունկցիայի գծման մեջ կդադարեցնեն կատարումը:
Մենք նախագծել ենք մի քանի հրահրող պայմաններ մկնիկը քարշ տալու դեպքում: Օրինակ, երբ մկնիկի հորիզոնական կոորդինատը 100 և 105 պիքսելների միջև է, երաժշտությունը ինքնաբերաբար կհնչի: Սա ստիպում է էկրանին ստեղծել մի քանի անտեսանելի լարեր: Միայն եթե մկնիկը անցնում է որոշակի տարածքներով, այն կհանգեցնի հարաբերական երաժշտության:
Քայլ 10: Համապարփակ օրինակ-Երաժշտական ներկապնակ 2 (թարմացված տարբերակ)
Վերոնշյալ օրինակի ազդեցությունն արդեն բավական լավ է: Բայց եթե ուշադիր նայենք, շատ խնդիրներ կգտնենք: Օրինակ, երբ մկնիկը շատ արագ է շարժվում, ամեն անգամ շարժվելիս կլոր կետ է թողնում էկրանին: Դա համահունչ ուղիղ գիծ չէ: Մինչդեռ դա նաև որոշակի երաժշտական արտահոսք է առաջացնում: Մինչ մկնիկը շատ դանդաղ է շարժվում ՝ անցնելով այն դիրքով, երբ հորիզոնական կոորդինատը 100 -ի և 105 -ի միջև է, այն շատ կարճ ժամանակում մի քանի անգամ երաժշտություն կհեռարձակի, ինչը ձեզ խրված լինելու զգացում է տալիս: Այս բոլոր խնդիրները մենք կարող ենք լուծել ստորև բերված օրինակի միջոցով:
Տեսանյութերը կարող եք դիտել ստորև բերված հղումով ՝
v.qq.com/x/page/w03226o4y4l.html
Կոդի օրինակ (10-8):
[cceN_cpp theme = "dawn"] ներմուծում processing.sound.*;
SoundFile sound1, sound2, sound3, sound4, sound5;
բուլյան 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»);
}
դատարկ վիճակահանություն () {
եթե (isDragging) {
կաթված (107, 27, 157, 100);
կաթված Քաշ (10);
տող (mouseX, mouseY, pmouseX, pmouseY);
}
}
void mouseDragged () {
isDragging = ճշմարիտ;
եթե ((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 ();
}
}
void mouseReleased () {
isDragging = կեղծ;
} [/cceN_cpp]
Կոդ Բացատրեք.
Այստեղ մենք օգտագործել ենք երկու փոփոխական pmouseX և pmouseY, որոնք տեղակայված են բուն Processing համակարգում: Նրանք նման են 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: Հարաբերական ընթերցումներ
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար `նախնական հպման մշակում
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Ստեղծեք ձեր առաջին մշակման ծրագիրը
Designրագրավորման հետաքրքիր ուղեցույց դիզայների համար-Գործարկեք ձեր պատկերը (մաս առաջին)
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար-Գործարկեք ձեր պատկերը (մաս երկրորդ)
Designրագրավորման հետաքրքիր ուղեցույց դիզայներների համար- Processրագրի գործընթացի վերահսկում- օղակի հայտարարություն
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար-Processրագրի գործընթացի վերահսկում-վիճակի մասին հայտարարություն (մաս առաջին)
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար-Processրագրի գործընթացի վերահսկում-վիճակի մասին հայտարարություն (մաս երկրորդ)
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար-Պատվերով գործառույթներ և ֆրակտալ հետընթաց
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար-Պատվերով գործառույթներ և ֆրակտալ հետընթաց
Դիզայների համար մշակման հետաքրքիր ծրագրավորման ուղեցույց-Գույնի վերահսկում
Քայլ 13: Աղբյուր
Այս հոդվածը ՝ https://www.elecfreaks.com/11592.html կայքից է
Եթե ունեք հարցեր, կարող եք կապվել : [email protected].
Խորհուրդ ենք տալիս:
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործարկեք ձեր պատկերը (մաս երկրորդ) `8 քայլ
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործի դրեք ձեր պատկերը (մաս երկրորդ). Մաթեմատիկան, ձեզանից շատերի համար, անօգուտ է թվում: Մեր առօրյա կյանքում ամենից հաճախ օգտագործվողը պարզապես գումարելն է, հանելը, բազմապատկելը և բաժանելն է: Այնուամենայնիվ, ամեն ինչ այլ է, եթե կարողանաք ստեղծել ծրագրով: Որքան շատ բան իմանաք, այնքան ավելի հիանալի արդյունք կստանաք
Դիզայների համար մշակման հետաքրքիր ծրագրավորման ուղեցույց-Գույնի վերահսկում. 10 քայլ
Դիզայների համար մշակման ծրագրավորման հետաքրքիր ուղեցույց. Այս գլխում մենք մտադիր ենք ավելի խորը ուսումնասիրել գիտելիքի այս ասպեկտը
Ուղեցույց L298 2Amp Motor Driver Shield- ի համար Arduino- ի համար. 6 քայլ
L298 2Amp Motor Driver Shield- ը Arduino- ի համար. Նկարագրություն L298 2Amp Motor Driver Shield- ը Arduino- ի համար հիմնված է L298 շարժիչի վարորդի ինտեգրալ սխեմայի վրա, լիարժեք կամուրջի շարժիչ: Այն կարող է վարել երկու առանձին 2A DC շարժիչներ կամ 1 2A քայլ շարժիչ: Շարժիչի արագությունը և ուղղությունները կարող են վերահսկվել առանձին
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Processրագրի գործընթացի վերահսկում- Loop հայտարարություն. 8 քայլ
Erրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Processրագրի գործընթացի վերահսկում. Օղակի հայտարարություն. Processրագրի գործընթացի վերահսկում. Օղակի հայտարարություն Այս գլուխը կարդալուց առաջ, եթե ցանկանում եք ծրագրի մեջ գծել 10 000 շրջանակ, կարող եք դա անել միայն ter
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործարկեք ձեր պատկերը (մաս առաջին). 16 քայլ
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործարկեք ձեր պատկերը (մաս առաջին). Run! Վազիր: Run! Mingրագրավորումը այնքան էլ դժվար չէ: Հիմնական բանը `գտնել ձեր ռիթմը և դա անել մեկ առ մեկ: Մինչև այս գլուխը կարդալը, հուսով եմ, որ արդեն ծանոթ եք հիմնական գործառույթների գծագրման մեթոդին, կամ գլխապտույտ և շփոթություն կզգաք