Სარჩევი:

დამუშავების პროგრამირების სახელმძღვანელო დიზაინერისთვის-მედია ჩატვირთვა და ღონისძიება: 13 ნაბიჯი
დამუშავების პროგრამირების სახელმძღვანელო დიზაინერისთვის-მედია ჩატვირთვა და ღონისძიება: 13 ნაბიჯი

ვიდეო: დამუშავების პროგრამირების სახელმძღვანელო დიზაინერისთვის-მედია ჩატვირთვა და ღონისძიება: 13 ნაბიჯი

ვიდეო: დამუშავების პროგრამირების სახელმძღვანელო დიზაინერისთვის-მედია ჩატვირთვა და ღონისძიება: 13 ნაბიჯი
ვიდეო: Bash სკრიპტინგი. დამატებითი მნიშვნელობის პარამეტრების დამუშავება 2024, ივლისი
Anonim
დიზაინის დამუშავების პროგრამული უზრუნველყოფის საინტერესო სახელმძღვანელო-მედიის ჩატვირთვა და ღონისძიება
დიზაინის დამუშავების პროგრამული უზრუნველყოფის საინტერესო სახელმძღვანელო-მედიის ჩატვირთვა და ღონისძიება

დამუშავება შეიძლება ბევრი გარე მონაცემებით იყოს დატვირთული, რომელთა შორის სამი ტიპი ძალიან ხშირად გამოიყენება. ისინი ცალკეა გამოსახულება, აუდიო და ვიდეო.

ამ თავში ჩვენ ვისაუბრებთ იმაზე, თუ როგორ ჩავტვირთოთ აუდიო და ვიდეო დეტალურად, მოვლენებთან ერთად. საბოლოო ჯამში, თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი მუსიკალური კლავიატურა ან მუსიკალური პალიტრა.

ნაბიჯი 1: წაიკითხეთ სურათი

სანამ დავიწყებთ, მოდით გადახედოთ სურათის ჩატვირთვის მეთოდს.

ნაბიჯი 2: სურათთან დაკავშირებული ფუნქციები

სანამ ამ ფუნქციებს გამოვიყენებთ, ჩვენ უნდა შევქმნათ გამოსახულების ობიექტი PImage– ის საშუალებით. შემდეგ ჩვენ შეგვიძლია გამოვიყენოთ ეს ფუნქციები გამოსახულების ყველა სახის თვისების დასადგენად.

არ დაგავიწყდეთ თქვენი პროგრამის გაშვებამდე თქვენი სურათის წყაროების მონაცემთა ფაილში შენახვა.

ნაბიჯი 3: მუსიკის ჩატვირთვა, დაკვრა და შეჩერება

შემდეგში, ჩვენ ვიწყებთ ფორმალურად წარმოგიდგინოთ მუსიკის გამოძახება თქვენთვის. ძალიან ჰგავს სურათის ჩატვირთვას, თავიდანვე უნდა გამოაცხადოთ აუდიო ობიექტი. თქვენ შეგიძლიათ მიმართოთ ქვემოთ მოცემულ მაგალითს რეალური გრამატიკიდან.

კოდის მაგალითი (10-1):

[cceN_cpp theme = "გამთენიისას"] იმპორტის დამუშავება. ხმა.*;

SoundFile ხმა;

void setup () {

ზომა (640, 360);

ფონი (255);

ხმა = ახალი SoundFile (ეს, "1.mp3");

}

ბათილად გათამაშება () {

}

void keyPressed () {

//Ხმის დაკვრა

if (გასაღები == 'p') {

ხმა. თამაში ();

}

// შეწყვიტე ხმა

თუ (გასაღები == 's') {

sound.stop ();

}

} [/cceN_cpp]

მომზადება:

თავად დამუშავებას არ აქვს ხმის ბიბლიოთეკა. თქვენ თვითონ უნდა გადმოწეროთ. ასე რომ, სანამ კოდს დაწერთ, უმჯობესია გააკეთოთ შემდეგი პრეპარატები.

დაამატეთ ბიბლიოთეკა დამუშავებას. აქ არის ჩვეულებრივი პრაქტიკა. აირჩიეთ მენიუს ზოლიდან "Tool"- "Add Tool" და შემდეგ გადადით "ბიბლიოთეკებზე". შეიყვანეთ ბიბლიოთეკის საკვანძო სიტყვები საძიებო სვეტში, რათა პირდაპირ გადმოწეროთ და დააინსტალიროთ.

თუმცა, თუ ჩვენ ვიყენებთ ამ ფუნქციას ჩვენს ქვეყანაში (ჩინეთში), ჩვენ არ შეგვიძლია მისი გადმოტვირთვა ინტერნეტის უშუალო კავშირის საშუალებით. ჩვენ უნდა დავიწყოთ VPN. მიუხედავად იმისა, რომ ჩვენ ვიწყებთ მას, იქნება არასტაბილური პირობები. ასე რომ, თქვენ უნდა იყოთ მოთმინება, რამდენჯერმე სცადოთ. ეს არის დატვირთვის ყველაზე მოსახერხებელი მეთოდი. თუ ვერ დააინსტალირებთ, უნდა გადმოწეროთ ოფიციალური ვებ – გვერდიდან სახელმძღვანელოთი. (https://processing.org/reference/libraries/) რადგან ხელით ინსტალაციის მეთოდი ძალიან რთულია, ჩვენ მას სხვა თავში განვიხილავთ.

კოდის ახსნა:

ხმის ბიბლიოთეკას შეუძლია სწორად იმუშაოს მომზადების დასრულების შემდეგ. გაუმკლავდეთ ზემოხსენებულ კოდს, დააწკაპუნეთ RUN, შემდეგ ის იმუშავებს. მუსიკის დასაკრავად დააჭირეთ ღილაკს "P", მუსიკის შესაჩერებლად "S".

თუ ის შეჩვეულია პროგრამას, ჯერ უნდა ჩავტვირთოთ. დასაწყისში, ჩვენ უნდა დავამატოთ წინადადება "იმპორტის დამუშავება.ხმის.*". "იმპორტი" არის საკვანძო სიტყვა, რაც ნიშნავს სიტყვასიტყვით ჩატვირთვას. დაამატეთ ბიბლიოთეკის სახელი "იმპორტის" მიღმა, შემდეგ ის იტვირთება ბიბლიოთეკა. კუდი ჩვეულებრივ მიჰყვება "*" ნიშანს, ამიტომ ის ბიბლიოთეკასთან დაკავშირებულ ყველა კლასს ჩატვირთავს პროგრამაში, სათითაოდ ხელით დამატების გარეშე.

მეორე წინადადებაში, "SoundFile sound;" გამოცხადებულია აუდიო ობიექტი. SoundFile მსგავსია PImage.

ფუნქციის კონფიგურაციის ფარგლებში, "sound = new SoundFile (ეს," 1.mp3 ");" გამოიყენება ობიექტის შესაქმნელად და მისი წაკითხვის ბილიკის დასადგენად. აქ ჩვენ რეალურად უკვე დავიწყეთ ახალი კონცეფციის კლასის გამოყენება. ამჟამად ჩვენ მას ღრმად არ განვიხილავთ. ჩვენ მხოლოდ უნდა ვიცოდეთ, რომ ეს არის ჩაწერის ფიქსირებული მეთოდი და ბოლო პარამეტრი არის მუსიკალური წყაროს მისამართის შევსება.

საკვანძო დაპრესილი () მოვლენებს შორის, "sound.play ()" და "sound.stop ()" შედარებით მუშაობს როგორც თამაშის ეფექტი და გაჩერება. "." შუაში მიუთითებს წევრის ფუნქციას, რომელიც დაკვრა და შეწყვეტა ეკუთვნის აუდიო ობიექტებს. ჩვენ შეგვიძლია განვიხილოთ წევრის ფუნქცია, როგორც ფუნქცია, რომელიც შედის ობიექტში. ის ეკუთვნის ამ ობიექტს, რომელიც წინასწარ არის განსაზღვრული. მოგვიანებით, როდესაც ჩვენ გვჭირდება რამდენიმე აუდიო ობიექტის დაკვრა, ჩვენ მხოლოდ უნდა დავამატოთ ".play ()" ფარდობითი ცვლადის სახელის უკან.

აუდიო წყაროები შეინახება მონაცემთა ფაილში sketchfile– ის იმავე კატალოგში (pde სუფიქსით). თუ არცერთი არ არის, შეგიძლიათ ხელით შექმნათ ერთი.

არ დაგავიწყდეთ ფუნქციის დახაზვის დაწერა. მიუხედავად იმისა, რომ თქვენ არ დახაზეთ გრაფიკა, აუცილებელია მუსიკის წარმატებით დაკვრა.

ზემოაღნიშნული პროცედურა საკმაოდ რთულად გამოიყურება, მაგრამ თქვენ უნდა დაამატოთ კოდის მხოლოდ რამდენიმე წინადადება, შემდეგ შეგიძლიათ გააცნობიეროთ თამაშის ფუნქცია. ძალიან მოსახერხებელია.

დამუშავება მხარს უჭერს საერთო აუდიო ფორმატებს, როგორიცაა mp3, wav, ogg და ა.

ნაბიჯი 4: მუსიკის სიჩქარის კონტროლი

ქვემოთ მოყვანილი მაგალითები გაცილებით საინტერესო გახდება. დამუშავებამ უზრუნველყო რამდენიმე ფუნქცია, რომელსაც შეუძლია გააკონტროლოს მუსიკის დაკვრის სიჩქარე. ამავე დროს, ტონები შეიცვლება მუსიკის დაკვრის სიჩქარით. როდესაც ჩვენ ვიყენებთ მაუსს გასაკონტროლებლად, ის გამოიწვევს ძალიან ფსიქოდელიურ ეფექტს.

ვიდეო საიტი:

კოდის მაგალითი (10-2):

[cceN_cpp theme = "გამთენიისას"] იმპორტის დამუშავება. ხმა.*;

SoundFile ხმა;

void setup () {

ზომა (640, 360);

ფონი (255);

ხმა = ახალი SoundFile (ეს, "1.mp3");

}

ბათილად გათამაშება () {

float სიჩქარე = mouseX/(float) სიგანე * 3;

ხმა. შეფასება (სიჩქარე);

float vol = mouseY/(float) სიმაღლე * 4;

sound.amp (ტომი);

}

void keyPressed () {

//Ხმის დაკვრა

if (გასაღები == 'p') {

ხმა. თამაში ();

}

// შეწყვიტე ხმა

თუ (გასაღები == '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 = "გარიჟრაჟი"] იმპორტის დამუშავება. ვიდეო.*;

ფილმის გადატანა;

void setup () {

ზომა (640, 360);

ფონი (0);

mov = ახალი ფილმი (ეს, "1.mov");

}

void movieEvent (ფილმის ფილმი) {

mov.read ();

}

ბათილად გათამაშება () {

სურათი (mov, 0, 0, 640, 360);

}

void keyPressed () {

if (გასაღები == 'p') {

mov.play ();

}

if (გასაღები == 's') {

mov.stop ();

}

თუ (გასაღები == 'დ') {

mov.pause ();

}

} [/cceN_cpp]

ვიდეო ეკრანის ანაბეჭდი:

კოდი განმარტეთ:

პირველი წინადადება "იმპორტის დამუშავება. ვიდეო.*;" გამოიყენება ვიდეო ბიბლიოთეკის ჩასატვირთად.

მეორე წინადადება "Movie mov;" გამოიყენება ვიდეოს ობიექტის გამოსაცხადებლად. მათ შორის, "ფილმის" ფუნქცია PImage- ის მსგავსია.

ფუნქციის დაყენებისას "mov = new Movie (this," 1.mov ");" ეფექტი არის ობიექტის შექმნა და მისი წაკითხვის ბილიკის განსაზღვრა. ბოლო პარამეტრი უნდა შეივსოს ვიდეოს წყაროს მისამართით.

Behine setup, movieEvent წარმოადგენს ვიდეო მოვლენას. იგი გამოიყენება ვიდეო ინფორმაციის განახლებისა და წასაკითხად. "mov.read ()" იმ შემთხვევაში ნიშნავს წაკითხულს.

სურათების ჩვენების გარდა, ფუნქციის სურათსაც შეუძლია ვიდეოს ჩვენება. ჩვენ შეგვიძლია განვიხილოთ ვიდეო ობიექტი, როგორც დინამიური სურათი. პირველი პარამეტრი, ჩვენ ვავსებთ ვიდეო ობიექტის ცვლადის სახელს. მეორე და მესამე პარამეტრები არის ჰორიზონტალური და ვერტიკალური კოორდინატები, რომლებიც შედგენილია ვიდეოთი. მეოთხე და მეხუთე პარამეტრი განსაზღვრავს ვიდეოს ჩვენების სიგრძეს და სიგანეს.

ფუნქცია. თამაში () ნიშნავს თამაშს. ფუნქცია.stop () ნიშნავს გაჩერებას და ის გადატვირთავს ვიდეოს. ფუნქცია.პაუზა () ნიშნავს პაუზას. ის შეწყვეტს მიმდინარე თამაშს, რომელიც გაგრძელდება მანამ, სანამ არ გამოცხადდება.play () ფუნქცია.

ნაბიჯი 6: ვიდეო სიჩქარის კონტროლი

კოდის მაგალითი (10-4):

[cceN_cpp theme = "გარიჟრაჟი"] იმპორტის დამუშავება. ვიდეო.*;

ფილმის გადატანა;

void setup () {

ზომა (640, 360);

ფონი (0);

mov = ახალი ფილმი (ეს, "transit.mov");

}

void movieEvent (ფილმის ფილმი) {

mov.read ();

}

ბათილად გათამაშება () {

სურათი (mov, 0, 0, სიგანე, სიმაღლე);

float newSpeed = mouseX/(float) სიგანე * 4;

mov.speed (newSpeed);

}

void keyPressed () {

if (გასაღები == 'p') {

mov.play ();

}

თუ (გასაღები == 's') {

mov.stop ();

}

თუ (გასაღები == 'დ') {

mov.pause ();

}

}

[/cceN_cpp]

კოდი განმარტეთ:

ფუნქცია.speed () შეიძლება გამოყენებულ იქნას ვიდეოს დაკვრის სიჩქარის გასაკონტროლებლად. როდესაც პარამეტრის მნიშვნელობა არის 1, დაკვრის სიჩქარე ნორმალურია. როდესაც ღირებულება აღემატება 1, მაშინ დააჩქაროს; სანამ ის 1 წლამდეა, შემდეგ შენელდება.

იმის გამო, რომ ჩვენ შევქმენით ადგილობრივი ცვლადი newSpeed და შემოვიტანეთ ის setSpeed () ფუნქციაში, თაგვის კოორდინატი პირდაპირ გავლენას მოახდენს ვიდეოს დაკვრის სიჩქარეზე.

რაც შეეხება ვიდეოს შესახებ მეტ მაგალითს, შეგიძლიათ მიმართოთ ბიბლიოთეკას - ვიდეო საქმის ბიბლიოთეკაში.

ნაბიჯი 7: საერთო მოვლენების დამუშავება

ადრე ჩვენ შემოვიღეთ მხოლოდ გასაღები () მოვლენა. ის გააქტიურდება კლავიატურის დაჭერის შემდეგ. შემდგომში ჩვენ წარმოგიდგენთ სხვა საერთო მოვლენებს თქვენთვის დამუშავებაში.

ზემოაღნიშნული მოვლენების გამოყენება მსგავსია KeyPressed- ის. მათ არ აქვთ კოდის წერის თანმიმდევრობა. სხვა სიტყვებით რომ ვთქვათ, არ აქვს მნიშვნელობა რომელი მოვლენა განათავსეთ ფუნქციის დაყენებამდე ან უკან, თქვენ მიიღებთ ერთსა და იმავე შედეგს. აღსრულების ბრძანება მხოლოდ მოვლენის გამომწვევ მდგომარეობას უკავშირდება. მხოლოდ იმ შემთხვევაში, თუ პირობა დაკმაყოფილებულია, მაშინ ის შესრულდება. ზემოთ მოყვანილი მოვლენები ძალიან ადვილი გასაგებია. თქვენ უბრალოდ უნდა ჩაატაროთ მცირე ექსპერიმენტი, შემდეგ კი სწრაფად გაითავისეთ მათი გამოყენება.

მოვლენის ნაკადი

ჩვენ შეგვიძლია გამოვიყენოთ მაგალითი, რომ ვიცოდეთ მოვლენების შესრულების თანმიმდევრობა.

კოდის მაგალითი (10-5):

[cceN_cpp theme = "გამთენიისას"] ბათილად დაყენება () {

frameRate (2);

println (1);

}

ბათილად გათამაშება () {

println (2);

}

void mousePressed () {

println (3);

}

void mouseMoved () {

println (4);

}

void mouseReleased () {

println (5);

}

void keyPressed () {

println (6);

}

void keyReleased () {

println (7);

} [/cceN_cpp]

კოდი განმარტეთ:

ფუნქციის დაყენებისას ფუნქციის frameRate () - მა დაადგინა პროგრამის მუშაობის სიჩქარე 2 კადრი წამში. კადრების სიხშირის შემცირება დაგვეხმარება კონსოლში გამომავალი მონაცემების დაკვირვებაში, იმ შემთხვევაში, თუ მოვლენები, რომლებიც იწვევენ, დაუყოვნებლივ დაიჭერს უკან ახალ მონაცემებს.

შეეცადეთ გადაიტანოთ მაუსი, დააწკაპუნეთ მაუსზე, გაათავისუფლეთ მაუსი და დააკვირდით გამომავალ შედეგს. გაეცანით ღონისძიების შესრულების ბრძანებას println– ის საშუალებით.

რა ღირს ყურადღების გამახვილება არის ის, რომ ფუნქციების დახაზვა არ შეიძლება ჩაწერილი სხვა მოვლენებში, გარდა ფუნქციის დახაზვისა, ან მისი ჩვენება შეუძლებელია. თუ ჩვენ გვსურს გავაკონტროლოთ გრაფიკული კომპონენტების დამალვა და ჩვენება ისეთი მოვლენების საშუალებით, როგორიცაა keyPressed, ჩვენ შეგვიძლია ჩავთვალოთ bool ცვლადის აგება როგორც საშუალო.

მოვლენები შესრულდება თანმიმდევრობით. მხოლოდ მას შემდეგ, რაც ყველა კოდს ახორციელებენ მიმდინარე ღონისძიებაში, ის შეასრულებს კოდს მომდევნო ღონისძიებაში.

ნაბიჯი 8: ყოვლისმომცველი მაგალითი-მუსიკალური კლავიატურა

ახლად გააზრებულ მოვლენებთან ერთად, ჩვენ შეგვიძლია დავამატოთ ახალი ინტერაქცია ჩვენს პროგრამას. შემდეგი, მხოლოდ რამდენიმე წუთის განმავლობაში, ჩვენ შეგვიძლია ადვილად ანალოგი მუსიკალური კლავიატურა.

ვიდეო საიტი:

კოდის მაგალითი (10-6):

[cceN_cpp theme = "გამთენიისას"] იმპორტის დამუშავება. ხმა.*;

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 (ცენტრი);

float w = სიგანე * 0.1;

float h = სიმაღლე * 0.8;

თუ (გასაღები 1) {

შევსება (255);

} სხვა {

შევსება (238, 145, 117);

}

სწორი (სიგანე/6, სიმაღლე/2, w, h);

თუ (გასაღები 2) {

შევსება (255);

} სხვა {

შევსება (246, 96, 100);

}

სწორი (სიგანე/6 * 2, სიმაღლე/2, w, h);

თუ (გასაღები 3) {

შევსება (255);

} სხვა {

შევსება (214, 86, 113);

}

სწორი (სიგანე/6 * 3, სიმაღლე/2, w, h);

თუ (გასაღები 4) {

შევსება (255);

} სხვა {

შევსება (124, 60, 131);

}

სწორი (სიგანე/6 * 4, სიმაღლე/2, w, h);

თუ (გასაღები 5) {

შევსება (255);

} სხვა {

შევსება (107, 27, 157);

}

სწორი (სიგანე/6 * 5, სიმაღლე/2, w, h);

}

void keyPressed () {

თუ (გასაღები == 'ა') {

sound1. თამაში ();

გასაღები 1 = ჭეშმარიტი;

}

თუ (გასაღები == 's') {

sound2. თამაში ();

გასაღები 2 = ჭეშმარიტი;

}

თუ (გასაღები == 'დ') {

sound3.play ();

გასაღები 3 = ჭეშმარიტი;

}

if (გასაღები == 'f') {

sound4.play ();

გასაღები 4 = ჭეშმარიტი;

}

თუ (გასაღები == 'გ') {

sound5.play ();

გასაღები 5 = ჭეშმარიტი;

}

}

void keyReleased () {

თუ (გასაღები == 'ა') {

გასაღები 1 = ყალბი;

}

თუ (გასაღები == 's') {

გასაღები 2 = ყალბი;

}

თუ (გასაღები == 'დ') {

გასაღები 3 = ყალბი;

}

if (გასაღები == 'f') {

გასაღები 4 = ყალბი;

}

თუ (გასაღები == 'გ') {

გასაღები 5 = ყალბი;

}

} [/cceN_cpp]

კოდი განმარტეთ:

ჩვენ უნდა შევქმნათ რამოდენიმე აუდიო ობიექტი, რომ წავიკითხოთ ხმის ნათესავი ინფორმაცია ისე, რომ სხვადასხვა ბგერების დაკვრა სხვადასხვა კლავიშების გააქტიურებისას.

აქ ჩვენ ვიყენებთ ახალი მოვლენის გასაღებს (გამოქვეყნებული). ამ ღონისძიების ფუნქციაა კლავიატურის ფერის პირვანდელ ფერში დაბრუნება. გასაღების გაშვებისას ის გააქტიურდება.

თავში გამოცხადებული 5 ლოგიკური მნიშვნელობა გამოიყენება გასაღების სტატუსის დასადგენად.

ნაბიჯი 9: ყოვლისმომცველი მაგალითი-მუსიკალური პალიტრა 1

კლავიატურის მოვლენის გარდა, მაუსის მოვლენა კარგია, რომ ჩვენ უნდა გამოვიყენოთ ის მოქნილად. შემდეგი მაგალითია ჩვენთვის მუსიკალური პალიტრის შესაქმნელად, რომელთა შორის ჩვენ გამოვიყენეთ თაგვებთან დაკავშირებული ორი ღონისძიება.

ვიდეო საიტი:

კოდის მაგალითი (10-7):

[cceN_cpp theme = "გამთენიისას"] იმპორტის დამუშავება. ხმა.*;

SoundFile sound1, sound2, sound3, sound4, sound5;

ლოგიკური არის Dragging;

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. თამაში ();

}

if (mouseX> 200 && mouseX <205) {

sound2. თამაში ();

}

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 = "გამთენიისას"] იმპორტის დამუშავება. ხმა.*;

SoundFile sound1, sound2, sound3, sound4, sound5;

ლოგიკური არის Dragging;

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 = ჭეშმარიტი;

if ((mouseX - 100) * (pmouseX - 100) <0) {

sound1. თამაში ();

}

if ((mouseX - 200) * (pmouseX - 200) <0) {

sound2. თამაში ();

}

if ((mouseX - 300) * (pmouseX - 300) <0) {

sound3.play ();

}

if ((mouseX - 400) * (pmouseX - 400) <0) {

sound4.play ();

}

თუ ((mouseX - 500) * (pmouseX - 500) <0) {

sound5.play ();

}

}

void mouseReleased () {

isDragging = ყალბი;

} [/cceN_cpp]

კოდი განმარტეთ:

აქ ჩვენ გამოვიყენეთ ორი ცვლადი pmouseX და pmouseY, რომელიც გადატანილია თავად დამუშავების სისტემაში. ისინი მსგავსია mouseX და mouseY, მაგრამ რაც მათ მიიღეს არის თაგვის კოორდინატი ბოლო ჩარჩოში.

ფუნქციის დახაზვისას ჩვენ გამოვიყენეთ ფუნქციის ხაზი () ორიგინალური ფუნქციის ელიფსის () შესაცვლელად. ეს ხდის ბოლო ჩარჩოს კოორდინატს პირდაპირ კავშირში მიმდინარე ჩარჩოს კოორდინატთან. ჩვენ შეგვიძლია დავხატოთ თანმიმდევრული სწორი ხაზები ან მოსახვევები.

მაუსის გადაადგილების შემთხვევაში, ჩვენ შევქმენით ახალი გამომწვევი მდგომარეობა.ვიმსჯელებთ, არის თუ არა ბოლო ჩარჩოს და ამჟამინდელი ჩარჩოს კოორდინატი ერთიდაიგივე მხარე, რათა იცოდეს გადაკვეთულია თუ არა გარკვეული კოორდინატი. მიიღეთ ეს პირობა მაგალითად: "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)

ეს სტატია მოდის დიზაინერი ვენზიდან.

ნაბიჯი 12: შედარებითი საკითხავი:

დიზაინერისთვის საინტერესო პროგრამირების სახელმძღვანელო-დამუშავების საწყისი შეხება

დიზაინერისთვის საინტერესო პროგრამირების სახელმძღვანელო - შექმენით თქვენი პირველი დამუშავების პროგრამა

დიზაინერისთვის საინტერესო პროგრამირების სახელმძღვანელო-გაუშვით თქვენი სურათი (ნაწილი პირველი)

დიზაინერისთვის საინტერესო პროგრამირების სახელმძღვანელო-გაუშვით თქვენი სურათი (მეორე ნაწილი)

საინტერესო პროგრამირების სახელმძღვანელო დიზაინერისათვის- პროგრამის პროცესის კონტროლი- მარყუჟის განცხადება

დიზაინერისათვის საინტერესო პროგრამირების სახელმძღვანელო-პროგრამის პროცესის კონტროლი-მდგომარეობის განცხადება (ნაწილი პირველი)

საინტერესო პროგრამირების სახელმძღვანელო დიზაინერისთვის-პროგრამის პროცესის კონტროლი-მდგომარეობის განცხადება (ნაწილი მეორე)

დიზაინერისთვის საინტერესო პროგრამირების სახელმძღვანელო-პერსონალური ფუნქციები და ფრაქტალური რეკურსია

დიზაინერისთვის საინტერესო პროგრამირების სახელმძღვანელო-პერსონალური ფუნქციები და ფრაქტალური რეკურსია

დიზაინის დამუშავების პროგრამული უზრუნველყოფის საინტერესო სახელმძღვანელო-ფერის კონტროლი

ნაბიჯი 13: წყარო

ეს სტატია არის:

თუ თქვენ გაქვთ რაიმე შეკითხვა, შეგიძლიათ დაუკავშირდეთ : [email protected].

გირჩევთ: