Spisu treści:

Interesujące wskazówki dotyczące programowania przetwarzania dla projektanta - ładowanie multimediów i zdarzenia: 13 kroków
Interesujące wskazówki dotyczące programowania przetwarzania dla projektanta - ładowanie multimediów i zdarzenia: 13 kroków

Wideo: Interesujące wskazówki dotyczące programowania przetwarzania dla projektanta - ładowanie multimediów i zdarzenia: 13 kroków

Wideo: Interesujące wskazówki dotyczące programowania przetwarzania dla projektanta - ładowanie multimediów i zdarzenia: 13 kroków
Wideo: Jak stworzyć dobrą stronę internetową? 7 wskazówek 2024, Lipiec
Anonim
Interesujące wskazówki dotyczące programowania przetwarzania dla projektanta - ładowanie multimediów i zdarzenia
Interesujące wskazówki dotyczące programowania przetwarzania dla projektanta - ładowanie multimediów i zdarzenia

Do przetwarzania można załadować wiele danych zewnętrznych, wśród których bardzo często stosowane są trzy typy. Są to osobno obraz, dźwięk i wideo.

W tym rozdziale omówimy szczegółowo wczytywanie audio i wideo, łącząc ze zdarzeniami. Na koniec możesz stworzyć własną klawiaturę muzyczną lub paletę muzyczną.

Krok 1: Przeczytaj obraz

Zanim zaczniemy, spójrzmy wstecz na sposób ładowania obrazu.

Krok 2: Funkcje związane z obrazem

Zanim użyjemy tych funkcji, musimy utworzyć obiekt obrazu za pomocą PImage. Następnie możemy użyć tych funkcji do zdefiniowania wszelkiego rodzaju właściwości obrazu.

Nie zapomnij zapisać źródeł obrazu w pliku danych przed uruchomieniem programu.

Krok 3: Ładowanie, odtwarzanie i zatrzymywanie muzyki

Poniżej zaczynamy formalnie przedstawiać wam przywołanie muzyki. Bardzo podobne do ładowania obrazu, na początku musisz zadeklarować obiekt audio. Możesz odnieść się do poniższego przykładu z aktualnej gramatyki.

Przykład kodu (10-1):

[cceN_cpp theme="dawn"] import processing.sound.*;

Dźwięk SoundFile;

pusta konfiguracja () {

rozmiar (640, 360);

tło (255);

dźwięk = nowy plik dźwiękowy(to, "1.mp3");

}

nieważne rysowanie () {

}

void naciśnięty klawisz() {

//Odtwórz dźwięk

jeśli (klucz == 'p') {

dźwięk.odtwórz();

}

//Zatrzymaj dźwięk

jeśli (klucz == 's') {

dźwięk.stop();

}

} [/cceN_cpp]

Przygotowanie:

Samo przetwarzanie nie zawiera żadnej biblioteki dźwięków. Musisz go pobrać samodzielnie. Tak więc przed napisaniem kodu lepiej poczynić następujące przygotowania.

Dodaj bibliotekę do Przetwarzania. Oto powszechna praktyka. Wybierz z paska menu "Narzędzie" -- "Dodaj narzędzie", a następnie przejdź do "Biblioteki". Wprowadź słowa kluczowe biblioteki w kolumnie wyszukiwania, aby móc ją bezpośrednio pobrać i zainstalować.

Jeśli jednak korzystamy z tej funkcji w naszym kraju (w Chinach), nie możemy jej pobrać, łącząc się bezpośrednio z siecią. Musimy uruchomić VPN. Nawet jeśli zaczniemy, warunki będą niestabilne. Musisz więc uzbroić się w cierpliwość, aby spróbować kilka razy. To najwygodniejszy sposób załadunku. Jeśli nie możesz zainstalować, musisz pobrać z oficjalnej strony ręcznie. (https://processing.org/reference/libraries/) Ponieważ ręczna metoda instalacji jest bardzo skomplikowana, omówimy ją dokładniej w innym rozdziale.

Wyjaśnienie kodu:

Biblioteka dźwięków może działać poprawnie po zakończeniu przygotowań. Poradzisz sobie z powyższym kodem, kliknij URUCHOM, wtedy będzie działać. Naciśnij klawisz „P”, aby odtwarzać muzykę, „S”, aby zatrzymać muzykę.

Jeśli jest używany do programu, musimy go najpierw załadować. Na początek musimy dodać zdanie „import processing.sound.*”. „import” to słowo kluczowe, oznaczające ładowanie dosłownie. Dodaj nazwę biblioteki za „import”, a następnie załaduje bibliotekę. Ogon zwykle następuje po znaku "*", dzięki czemu załaduje wszystkie klasy związane z biblioteką do programu bez konieczności dodawania ich pojedynczo ręcznie.

W drugim zdaniu " SoundFile sound; " zadeklarował obiekt audio. SoundFile jest podobny do PImage.

W ustawieniach funkcji " sound = new SoundFile(this, "1.mp3"); " służy do tworzenia obiektu i definiowania jego ścieżki odczytu. Tutaj właściwie już zaczęliśmy używać nowej koncepcji Class. W tej chwili nie dyskutujemy o tym głęboko. Musimy tylko wiedzieć, że jest to ustalona metoda zapisu, a ostatni parametr służy do wpisania adresu źródła muzyki.

Wśród zdarzeń keyPressed(), "sound.play()" i "sound.stop()" działają względnie jako efekt odtwarzania i zatrzymania. "." w środku wskazuje funkcję składową, która odtwarza i zatrzymuje się, należą do obiektów audio. Możemy uznać funkcję składową za funkcję zawartą w obiekcie. Należy do tego obiektu, który jest z góry określony. Później, gdy musimy odtworzyć wiele obiektów audio, wystarczy dodać „.play()” za względną nazwą zmiennej.

Źródła audio powinny być przechowywane w pliku danych w tym samym katalogu pliku szkicu (z sufiksem pde). Jeśli nie ma, możesz je utworzyć ręcznie.

Nie zapomnij napisać funkcji draw. Mimo że nie narysowałeś żadnej grafiki, konieczne jest pomyślne odtwarzanie muzyki.

Powyższa procedura wydaje się dość skomplikowana, ale wystarczy dodać kilka zdań kodu, aby można było zrealizować funkcję odtwarzania. Jest to bardzo wygodne.

Przetwarzanie obsługuje popularne formaty audio, takie jak mp3, wav, ogg itp.

Krok 4: Kontrola prędkości muzyki

Poniższe przykłady zaczną być bardzo interesujące. Przetwarzanie zapewniło kilka funkcji, które mogą kontrolować prędkość odtwarzania muzyki. W tym samym czasie dźwięki będą się zmieniać wraz z prędkością odtwarzania muzyki. Kiedy użyjemy myszki do sterowania, wygeneruje to bardzo psychodeliczny efekt.

Witryna wideo:

Przykład kodu (10-2):

[cceN_cpp theme="dawn"] import processing.sound.*;

Dźwięk SoundFile;

pusta konfiguracja () {

rozmiar (640, 360);

tło (255);

dźwięk = nowy plik dźwiękowy(to, "1.mp3");

}

nieważne rysowanie () {

prędkość zmiennoprzecinkowa = szerokość myszyX/(zmiennoprzecinkowa) * 3;

szybkość.dźwięku(prędkość);

float vol = mouseY/(float)height * 4;

dźwięk.amp(vol);

}

void naciśnięty klawisz() {

//Odtwórz dźwięk

jeśli (klucz == 'p') {

dźwięk.odtwórz();

}

//Zatrzymaj dźwięk

jeśli (klucz == 's') {

dźwięk.stop();

}

} [/cceN_cpp]

Wyjaśnij kod:

Funkcja.rate() kontroluje prędkość odtwarzania dźwięku. Wartość w nawiasie określa szybkość i szybkość odtwarzania. Gdy wartość wynosi 1, prędkość odtwarzania jest normalna. Gdy jest powyżej 1, przyspiesz; gdy jest poniżej 1, a następnie zwolnij.

Funkcja.amp() steruje głośnością dźwięku. Wartość w nawiasie określa wartość objętości. Gdy wynosi 1, wartość głośności jest normalna. Gdy jest powyżej 1, zwiększ głośność; gdy jest poniżej 1, zmniejsz głośność.

Tutaj zbudowaliśmy dwie zmienne lokalne speed i vol jako parametry do załadowania. Dlatego współrzędna pozioma myszy zmieni ton muzyki, a współrzędna pionowa zmieni głośność muzyki.

Krok 5: Odtwarzanie i zatrzymywanie wideo

W Przetwarzaniu ładowanie wideo jest podobne do ładowania dźwięku. Musisz najpierw pobrać bibliotekę wideo. (https://processing.org/reference/libraries/video/index.html)

Przykład kodu (10-3):

[cceN_cpp theme="dawn"] import processing.video.*;

film filmowy;

pusta konfiguracja () {

rozmiar (640, 360);

tło(0);

mov = new Movie(this, "1.mov");

}

void movieEvent(film) {

mov.czytaj();

}

nieważne rysowanie () {

image(mov, 0, 0, 640, 360);

}

void naciśnięty klawisz() {

jeśli (klucz == 'p') {

mov.play();

}

jeśli (klucz == 's') {

ruch.stop();

}

if (klucz == 'd') {

mov.pauza();

}

} [/cceN_cpp]

Zrzut ekranu wideo:

Wyjaśnij kod:

Pierwsze zdanie „ import processing.video.*;” służy do ładowania biblioteki wideo.

Drugie zdanie " Movie mov; " służy do deklarowania obiektu wideo. Wśród nich funkcja „Film” jest podobna do PImage.

W konfiguracji funkcji efektem " mov = new Movie(this, "1.mov"); " jest utworzenie obiektu i zdefiniowanie jego ścieżki odczytu. W ostatnim parametrze należy podać adres źródła wideo.

Za konfiguracją movieEvent reprezentuje zdarzenie wideo. Służy do aktualizacji i odczytywania informacji wideo. "mov.read()" w zdarzeniu oznacza przeczytanie.

Oprócz wyświetlania obrazów funkcja obrazu może również wyświetlać wideo. Możemy traktować obiekt wideo jako dynamiczny obraz. Pierwszy parametr, wypełniamy nazwę zmiennej obiektu wideo. Drugi i trzeci parametr to współrzędna pozioma i pionowa narysowana przez wideo. Czwarty i piąty parametr decydują o długości i szerokości wyświetlania wideo.

Funkcja.play() oznacza odtwarzanie. Funkcja.stop() oznacza zatrzymanie i zresetuje wideo. Funkcja.pause() oznacza pauzę. Przerwie to bieżące odtwarzanie, które będzie trwało aż do wywołania funkcji.play().

Krok 6: Kontrola prędkości wideo

Przykład kodu (10-4):

[cceN_cpp theme="dawn"] import processing.video.*;

film filmowy;

pusta konfiguracja () {

rozmiar (640, 360);

tło(0);

mov = new Movie(this, "transit.mov");

}

void movieEvent(film) {

mov.czytaj();

}

nieważne rysowanie () {

image(mov, 0, 0, szerokość, wysokość);

float newSpeed = mouseX/(float)width * 4;

mov.speed(nowaPrędkość);

}

void naciśnięty klawisz() {

jeśli (klucz == 'p') {

mov.play();

}

jeśli (klucz == 's') {

ruch.stop();

}

if (klucz == 'd') {

mov.pauza();

}

}

[/cceN_cpp]

Wyjaśnij kod:

Funkcja.speed() może służyć do kontrolowania szybkości odtwarzania wideo. Gdy wartość parametru wynosi 1, prędkość odtwarzania jest normalna. Gdy wartość przekracza 1, przyspiesz; gdy jest poniżej 1, a następnie zwolnij.

Ponieważ zbudowaliśmy zmienną lokalną newSpeed i zaimportowaliśmy ją do funkcji setSpeed(), współrzędna myszy będzie miała bezpośredni wpływ na prędkość odtwarzania wideo.

Więcej przykładów wideo można znaleźć w sekcji Biblioteki - Wideo w bibliotece przypadków.

Krok 7: Przetwarzanie typowych zdarzeń

Wcześniej wprowadziliśmy tylko zdarzenie keyPressed(). Zostanie uruchomiony po naciśnięciu klawisza. Poniżej przedstawimy dla Ciebie inne typowe zdarzenia w Przetwarzaniu.

Użycie powyższych zdarzeń jest podobne do keyPressed. Nie mają sekwencji w pisaniu kodu. Innymi słowy, bez względu na to, które zdarzenie umieściłeś przed lub za ustawieniem funkcji, otrzymasz ten sam wynik. Zlecenie wykonania jest związane tylko z warunkiem wyzwolenia samego zdarzenia. Tylko jeśli warunek zostanie spełniony, zostanie wykonany. Wszystkie powyższe wydarzenia są bardzo łatwe do zrozumienia. Wystarczy przeprowadzić mały eksperyment, aby szybko zrozumieć ich zastosowania.

Przebieg zdarzeń

Możemy posłużyć się przykładem, aby poznać kolejność realizacji zdarzeń.

Przykład kodu (10-5):

[cceN_cpp theme="świt"] void setup() {

liczba klatek na sekundę(2);

println(1);

}

nieważne rysowanie () {

println(2);

}

nieważna myszNaciśnięta() {

println(3);

}

nieważna myszPrzeniesiona() {

println(4);

}

void mouseReleased() {

println(5);

}

void naciśnięty klawisz() {

println(6);

}

void keyReleased() {

println(7);

} [/cceN_cpp]

Wyjaśnij kod:

W konfiguracji funkcji funkcja frameRate() ustawiła szybkość działania programu na 2 klatki na sekundę. Obniżenie liczby klatek na sekundę może pomóc nam obserwować dane wyjściowe w konsoli w przypadku, gdy wyzwolone zdarzenia zostaną natychmiast przeniesione przez nowe dane do tyłu.

Spróbuj poruszać myszą, kliknij myszką, zwolnij mysz i obserwuj wynik. Zapoznaj się z kolejnością realizacji zdarzenia poprzez println.

Warto zwrócić uwagę, że funkcje rysowania nie mogą być wpisywane do innych zdarzeń poza rysowaniem funkcji lub nie mogą być wyświetlane. Jeśli chcemy kontrolować ukrywanie i wyświetlanie elementów graficznych poprzez zdarzenia takie jak keyPressed, możemy rozważyć zbudowanie zmiennej bool jako medium.

Wydarzenia będą realizowane w kolejności. Dopiero po zaimplementowaniu całego kodu w bieżącym zdarzeniu, wykona kod w następnym zdarzeniu.

Krok 8: Kompleksowy przykład - klawiatura muzyczna

Łącząc się z nowo uchwyconymi wydarzeniami, możemy dodać do naszego programu nowe interakcje. Następnie, w kilka minut, możemy z łatwością analogować klawiaturę muzyczną.

Witryna wideo:

Przykład kodu (10-6):

[cceN_cpp theme="dawn"] import processing.sound.*;

SoundFile dźwięk1, dźwięk2, dźwięk3, dźwięk4, dźwięk5;

boolean klucz1, klucz2, klucz3, klucz4, klucz5;

pusta konfiguracja () {

rozmiar (640, 360);

tło (255);

noStroke();

sound1 = new SoundFile(this, "do.wav");

sound2 = new SoundFile(this, "re.wav");

sound3 = new SoundFile(this, "mi.wav");

sound4 = new SoundFile(this, "fa.wav");

sound5 = new SoundFile(this, "so.wav");

}

nieważne rysowanie () {

tło (255, 214, 79);

RektMode(ŚRODEK);

pływak w = szerokość * 0,1;

pływak h = wysokość * 0,8;

jeśli (klucz 1) {

wypełnić(255);

} w przeciwnym razie {

wypełnienie (238, 145, 117);

}

prostokąt(szerokość/6, wysokość/2, w, w);

jeśli (klucz 2) {

wypełnić(255);

} w przeciwnym razie {

wypełnienie (246, 96, 100);

}

prostokąt(szerokość/6 * 2, wysokość/2, w, w);

jeśli (klucz 3) {

wypełnić(255);

} w przeciwnym razie {

wypełnienie (214, 86, 113);

}

prostokąt(szerokość/6 * 3, wysokość/2, w, w);

jeśli (klucz 4) {

wypełnić(255);

} w przeciwnym razie {

wypełnienie (124, 60, 131);

}

prostokąt(szerokość/6 * 4, wysokość/2, w, w);

jeśli (klucz 5) {

wypełnić(255);

} w przeciwnym razie {

wypełnienie (107, 27, 157);

}

prostokąt(szerokość/6 * 5, wysokość/2, w, w);

}

void naciśnięty klawisz() {

jeśli (klucz == 'a') {

dźwięk1.odtwórz();

klucz1 = prawda;

}

jeśli (klucz == 's') {

dźwięk2.graj();

klucz2 = prawda;

}

if (klucz == 'd') {

dźwięk3.odtwórz();

klucz3 = prawda;

}

jeśli (klucz == 'f') {

dźwięk4.odtwórz();

klucz4 = prawda;

}

jeśli (klucz == 'g') {

dźwięk5.odtwórz();

klucz5 = prawda;

}

}

void keyReleased() {

jeśli (klucz == 'a') {

klucz1 = fałsz;

}

jeśli (klucz == 's') {

klucz2 = fałsz;

}

if (klucz == 'd') {

klucz3 = fałsz;

}

jeśli (klucz == 'f') {

klucz4 = fałsz;

}

jeśli (klucz == 'g') {

klucz5 = fałsz;

}

} [/cceN_cpp]

Wyjaśnij kod:

Musimy utworzyć wiele obiektów audio, aby odczytać względne informacje o dźwięku, aby odtwarzać różne dźwięki po uruchomieniu różnych klawiszy.

Tutaj używamy nowego zdarzenia keyReleased(). Funkcją tego zdarzenia jest przywrócenie oryginalnego koloru klawiatury. Po zwolnieniu klawisza zostanie on uruchomiony.

5 wartości logicznych zadeklarowanych w nagłówku służy do wykrywania stanu klucza.

Krok 9: Kompleksowy przykład - paleta muzyki 1

Poza zdarzeniem klawiatury, zdarzenie myszy to dobra rzecz, że musimy z niej elastycznie korzystać. Poniższy przykład służy nam do stworzenia palety muzycznej, wśród której wykorzystaliśmy dwa zdarzenia związane z myszą.

Witryna wideo:

Przykład kodu (10-7):

[cceN_cpp theme="dawn"] import processing.sound.*;

SoundFile dźwięk1, dźwięk2, dźwięk3, dźwięk4, dźwięk5;

wartość logiczna toPrzeciąganie;

pusta konfiguracja () {

rozmiar (640, 360);

tło (255, 214, 79);

noStroke();

sound1 = new SoundFile(this, "do.wav");

sound2 = new SoundFile(this, "re.wav");

sound3 = new SoundFile(this, "mi.wav");

sound4 = new SoundFile(this, "fa.wav");

sound5 = new SoundFile(this, "so.wav");

}

nieważne rysowanie () {

jeśli (przeciąganie) {

wypełnienie (107, 27, 157, 100);

elipsa(myszX, myszY, 16, 16);

}

}

void mouseDragged() {

isPrzeciąganie = prawda;

if (myszX > 100 && myszX < 105) {

dźwięk1.odtwórz();

}

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

dźwięk2.graj();

}

if (myszX > 300 && myszX < 305) {

dźwięk3.odtwórz();

}

if (myszX > 400 && myszX < 405) {

dźwięk4.odtwórz();

}

if (myszX > 500 && myszX < 505) {

dźwięk5.odtwórz();

}

}

void mouseReased() {

isPrzeciąganie = fałsz;

} [/cceN_cpp]

Wyjaśnij kod:

Mamy nadzieję, że dopiero po naciśnięciu i przeciągnięciu myszki możemy rysować obrazki. Musimy więc zbudować zmienną logiczną isDragging, aby uzyskać aktualny stan.

Podczas przeciągania myszą, isDragging staje się prawdziwą wartością, dzięki czemu zostaną wykonane funkcje rysowania w Draw. Pozostawi ślady na ekranie. Kiedy puścimy myszkę, isDraging staje się fałszywą wartością. Tak więc funkcje rysowania w funkcji draw zatrzymają wykonywanie.

Zaprojektowaliśmy kilka warunków wyzwalających w przypadku przeciągania myszy. Na przykład, gdy współrzędna pozioma myszy mieści się w zakresie od 100 do 105 pikseli, muzyka będzie odtwarzana automatycznie. To sprawia, że ekran tworzy kilka niewidocznych ciągów. Tylko jeśli mysz przejdzie przez określone obszary, uruchomi odpowiednią muzykę.

Krok 10: obszerny przykład - paleta muzyki 2 (zaktualizowana wersja)

Efekt z powyższego przykładu jest już wystarczająco dobry. Ale jeśli przyjrzymy się temu uważnie, natkniemy się na wiele problemów. Na przykład, gdy mysz porusza się bardzo szybko, za każdym razem pozostawia okrągły punkt na ekranie. Nie jest to spójna linia prosta. W międzyczasie powoduje to również wyciek muzyki. Podczas gdy mysz porusza się bardzo powoli, przechodząc przez pozycję, gdy współrzędna pozioma znajduje się między 100 a 105, będzie emitować muzykę wiele razy w bardzo krótkim czasie, co daje poczucie utknięcia. Wszystkie te problemy możemy rozwiązać na poniższym przykładzie.

Możesz oglądać filmy w poniższym linku:

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

Przykład kodu (10-8):

[cceN_cpp theme="dawn"] import processing.sound.*;

SoundFile dźwięk1, dźwięk2, dźwięk3, dźwięk4, dźwięk5;

wartość logiczna toPrzeciąganie;

pusta konfiguracja () {

rozmiar (640, 360);

tło (255, 214, 79);

noStroke();

sound1 = new SoundFile(this, "do.wav");

sound2 = new SoundFile(this, "re.wav");

sound3 = new SoundFile(this, "mi.wav");

sound4 = new SoundFile(this, "fa.wav");

sound5 = new SoundFile(this, "so.wav");

}

nieważne rysowanie () {

jeśli (przeciąganie) {

udar (107, 27, 157, 100);

obrys Waga(10);

line(mouseX, mouseY, pmouseX, pmouseY);

}

}

void mouseDragged() {

isPrzeciąganie = prawda;

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

dźwięk1.odtwórz();

}

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

dźwięk2.graj();

}

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

dźwięk3.odtwórz();

}

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

dźwięk4.odtwórz();

}

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

dźwięk5.odtwórz();

}

}

void mouseReased() {

isPrzeciąganie = fałsz;

} [/cceN_cpp]

Wyjaśnij kod:

Tutaj użyliśmy dwóch zmiennych pmouseX i pmouseY przenoszonych w samym systemie Processing. Są one podobne do mouseX i mouseY, ale uzyskali współrzędną myszy w ostatniej klatce.

W funkcji rysowania użyliśmy funkcji line(), aby zastąpić oryginalną funkcję ellipse(). To sprawia, że współrzędna ostatniej klatki jest bezpośrednio połączona ze współrzędną bieżącej klatki. Możemy więc rysować spójne linie proste lub krzywe.

W przypadku mouseDragged zaprojektowaliśmy nowy warunek wyzwalania. Poprzez ocenę, czy współrzędne ostatniej klatki i bieżącej klatki są po tej samej stronie, aby wiedzieć, czy określona współrzędna została przekroczona. Weźmy ten warunek jako przykład: " if ((mouseX - 100) * (pmouseX - 100) < 0) ". Wśród nich, z dodatniej i ujemnej wartości wynikającej z "mouseX - 100", możemy wiedzieć, czy mouseX jest na prawo czy na lewo od poziomej współrzędnej 100. Podobnie jak "pmouseX - 100". Dlatego, gdy dwa punkty z przodu iz tyłu nie są po tej samej stronie, dodatni pomnoży ujemny, otrzyma nową liczbę ujemną. W ten sposób warunek wykonania jest spełniony.

Powyższe jest uproszczonym wyrażeniem, w którym sprytnie użyto pewnego algorytmu matematycznego - pomnożenie dwóch negatywów da wynik pozytywny. Możesz również podzielić go na dwie sytuacje, aby omówić osobno. Jednak o wiele bardziej skomplikowane jest napisanie warunków oceny. Warunki oceny „if ((mouseX = 100) || (mouseX > 100 && pmouseX <= 100))” są równoważne warunkom określającym kodu źródłowego.

Krok 11: Względne funkcje dotyczące sterowania audio i wideo

Wyżej wymienione funkcje są wystarczające dla ogólnych scenariuszy użytkowania. Jeśli chcesz to głęboko zagłębić, tutaj zebrałem dla Ciebie kilka typowych funkcji związanych z audio i wideo. Możesz zbadać jego zastosowania zgodnie z własnymi wymaganiami.

Więcej wstępu można znaleźć w dokumentach z oficjalnej strony internetowej.

Dźwięk (https://processing.org/reference/libraries/sound/index.html)

Wideo (https://processing.org/reference/libraries/video/index.html)

Ten artykuł pochodzi od projektantki Wenzy.

Krok 12: Odczyty względne:

Interesujące wskazówki dotyczące programowania dla projektanta - przetwarzanie początkowego dotyku

Interesujące wskazówki dotyczące programowania dla projektanta - stwórz swój pierwszy program do przetwarzania

Interesujące wskazówki dotyczące programowania dla projektanta - uruchom swoje zdjęcie (część pierwsza)

Interesujące wskazówki dotyczące programowania dla projektanta - uruchom swoje zdjęcie (część druga)

Interesujące wskazówki dotyczące programowania dla projektanta - kontrola procesu programu - instrukcja pętli

Interesujące wskazówki dotyczące programowania dla projektanta - kontrola procesu programu - oświadczenie o warunkach (część pierwsza)

Interesujące wskazówki dotyczące programowania dla projektanta - kontrola procesu programu - instrukcja warunku (część druga)

Interesujące wskazówki dotyczące programowania dla projektanta - funkcje niestandardowe i rekurencja fraktalna

Interesujące wskazówki dotyczące programowania dla projektanta - funkcje niestandardowe i rekurencja fraktalna

Interesujące wskazówki dotyczące programowania przetwarzania dla projektanta - kontrola kolorów

Krok 13: Źródło

Ten artykuł pochodzi z:

Jeśli masz jakieś pytania, możesz skontaktować się z: [email protected].

Zalecana: