Mục lục:

Hướng dẫn lập trình xử lý thú vị cho nhà thiết kế - Tải phương tiện và sự kiện: 13 bước
Hướng dẫn lập trình xử lý thú vị cho nhà thiết kế - Tải phương tiện và sự kiện: 13 bước

Video: Hướng dẫn lập trình xử lý thú vị cho nhà thiết kế - Tải phương tiện và sự kiện: 13 bước

Video: Hướng dẫn lập trình xử lý thú vị cho nhà thiết kế - Tải phương tiện và sự kiện: 13 bước
Video: Quá nhiều hướng đi khi bắt đầu học lập trình, nên chọn hướng nào, công ty nào? | Vũ Nguyễn Coder 2024, Tháng bảy
Anonim
Hướng dẫn lập trình xử lý thú vị cho nhà thiết kế - Tải phương tiện và sự kiện
Hướng dẫn lập trình xử lý thú vị cho nhà thiết kế - Tải phương tiện và sự kiện

Quá trình xử lý có thể được tải rất nhiều dữ liệu bên ngoài, trong đó có ba loại rất thường được sử dụng. Chúng là hình ảnh, âm thanh và video riêng biệt.

Trong chương này, chúng ta sẽ nói về cách tải âm thanh và video một cách chi tiết, kết hợp với các sự kiện. Cuối cùng, bạn có thể tạo bàn phím âm nhạc hoặc bảng nhạc của riêng mình.

Bước 1: Đọc hình ảnh

Trước khi bắt đầu, chúng ta hãy nhìn lại phương pháp tải ảnh.

Bước 2: Các chức năng liên quan đến hình ảnh

Trước khi sử dụng các hàm này, chúng ta cần tạo một đối tượng hình ảnh thông qua PImage. Sau đó, chúng ta có thể sử dụng các hàm này để xác định tất cả các loại thuộc tính hình ảnh.

Đừng quên lưu trữ các nguồn hình ảnh của bạn vào tệp dữ liệu trước khi chạy chương trình của bạn.

Bước 3: Tải nhạc, phát và dừng

Sau đây, chúng tôi xin bắt đầu chính thức giới thiệu đến các bạn cách gọi âm nhạc. Tương tự như tải hình ảnh, bạn phải khai báo một đối tượng âm thanh ở đầu. Bạn có thể tham khảo ví dụ bên dưới để biết ngữ pháp thực tế.

Ví dụ về mã (10-1):

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

Âm thanh SoundFile;

void setup () {

kích thước (640, 360);

nền (255);

sound = new SoundFile (this, "1.mp3");

}

void draw () {

}

void keyPressed () {

// Phát âm thanh

if (key == 'p') {

sound.play ();

}

// Dừng âm thanh

if (key == 's') {

sound.stop ();

}

} [/cceN_cpp]

Sự chuẩn bị:

Bản thân quá trình xử lý không mang bất kỳ thư viện âm thanh nào. Bạn cần phải tải xuống nó bởi chính mình. Vì vậy, trước khi viết mã, bạn nên chuẩn bị những điều sau.

Thêm thư viện vào Xử lý. Đây là cách làm phổ biến. Chọn từ thanh menu cho "Công cụ" - "Thêm Công cụ", sau đó chuyển sang "Thư viện". Nhập các từ khóa của thư viện vào cột tìm kiếm để bạn có thể tải xuống và cài đặt trực tiếp.

Tuy nhiên, nếu chúng ta sử dụng chức năng này ở trong nước (ở Trung Quốc), chúng ta không thể tải xuống bằng cách kết nối web trực tiếp. Chúng tôi phải khởi động VPN. Mặc dù chúng tôi bắt đầu nó, nhưng sẽ có những điều kiện không ổn định. Vì vậy bạn phải kiên nhẫn làm thử vài lần. Đây là phương pháp nạp tiền thuận tiện nhất. Nếu bạn không thể cài đặt, bạn phải tải xuống từ trang web chính thức bằng cách thủ công. (https://processing.org/reference/libraries/) Bởi vì phương pháp cài đặt thủ công rất phức tạp, chúng ta sẽ thảo luận thêm về nó trong chương khác.

Mã Exaplain:

Thư viện âm thanh có thể hoạt động bình thường sau khi chuẩn bị xong. Mở đoạn mã trên, nhấp vào RUN, sau đó nó sẽ hoạt động. Nhấn phím "P" để phát nhạc, "S" để dừng nhạc.

Nếu nó đã quen với chương trình, chúng ta cần tải nó trước. Mở đầu, chúng ta phải thêm một câu "import processing.sound. *". "import" là từ khóa, có nghĩa là tải theo nghĩa đen. Thêm tên thư viện đằng sau "nhập", sau đó nó sẽ tải thư viện. Đuôi thường theo sau dấu "*", do đó nó sẽ tải tất cả các lớp liên quan đến thư viện vào chương trình mà không cần phải thêm từng lớp một theo cách thủ công.

Trong câu thứ hai, "SoundFile sound;" đã khai báo một đối tượng âm thanh. SoundFile tương tự như PImage.

Trong thiết lập chức năng, "sound = new SoundFile (this," 1.mp3 ");" được sử dụng để tạo một đối tượng và xác định đường dẫn đọc của nó. Ở đây chúng tôi thực sự đã bắt đầu sử dụng một Class khái niệm mới. Hiện tại chúng ta không bàn sâu về nó. Chúng ta chỉ cần biết nó là một phương pháp ghi cố định và tham số cuối cùng là để điền địa chỉ của nguồn nhạc.

Trong số các sự kiện keyPressed (), "sound.play ()" và "sound.stop ()" tương đối hoạt động như hiệu ứng của phát và dừng. "." ở giữa biểu thị một chức năng thành viên phát và dừng thuộc về các đối tượng âm thanh. Chúng ta có thể coi hàm thành viên là hàm có trong đối tượng. Nó thuộc về đối tượng này, được xác định trước. Sau này, khi chúng ta cần phát nhiều đối tượng âm thanh, chúng ta chỉ cần thêm ".play ()" vào phía sau tên biến tương đối.

Nguồn âm thanh sẽ được lưu trữ vào tệp dữ liệu dưới cùng một danh mục của sketchfile (với hậu tố pde). Nếu không có, bạn có thể tạo thủ công.

Đừng quên viết hàm vẽ. Mặc dù bạn không vẽ bất kỳ đồ họa nào, nhưng cần thiết để phát nhạc thành công.

Quy trình trên có vẻ khá phức tạp, nhưng bạn chỉ cần thêm vài câu mã vào thì bạn có thể nhận ra chức năng chơi. Nó thật tiện lợi.

Xử lý hỗ trợ các định dạng âm thanh phổ biến như mp3, wav, ogg, v.v.

Bước 4: Kiểm soát tốc độ âm nhạc

Các ví dụ sau đây sẽ bắt đầu trở nên thú vị hơn nhiều. Xử lý đã cung cấp một số chức năng có thể kiểm soát tốc độ chơi nhạc. Đồng thời, âm sắc sẽ thay đổi theo tốc độ chơi nhạc. Khi chúng ta sử dụng chuột để điều khiển, nó sẽ tạo ra hiệu ứng ảo giác.

Trang web video:

Ví dụ về mã (10-2):

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

Âm thanh SoundFile;

void setup () {

kích thước (640, 360);

nền (255);

sound = new SoundFile (this, "1.mp3");

}

void draw () {

float speed = mouseX / (float) width * 3;

sound.rate (tốc độ);

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

sound.amp (vol);

}

void keyPressed () {

// Phát âm thanh

if (key == 'p') {

sound.play ();

}

// Dừng âm thanh

if (key == 's') {

sound.stop ();

}

} [/cceN_cpp]

Giải thích mã:

Hàm.rate () điều khiển tốc độ phát âm thanh. Giá trị trong ngoặc đơn xác định tốc độ chơi nhanh hay chậm. Khi giá trị là 1, tốc độ chơi là bình thường. Khi nó vượt quá 1, sau đó tăng tốc; trong khi nó dưới 1, sau đó giảm tốc.

Hàm.amp () điều khiển âm lượng. Giá trị trong ngoặc đơn xác định giá trị khối lượng. Khi nó là 1, giá trị âm lượng là bình thường. Khi nó vượt quá 1, sau đó tăng âm lượng; trong khi nó dưới 1, sau đó giảm âm lượng.

Ở đây chúng tôi đã xây dựng hai biến cục bộ speed và vol làm các tham số được tải vào. Do đó, tọa độ ngang của chuột sẽ thay đổi giai điệu nhạc, và tọa độ dọc sẽ thay đổi âm lượng nhạc.

Bước 5: Phát và dừng video

Trong Xử lý, tải video tương tự như tải âm thanh. Bạn phải tải xuống thư viện video trước. (https://processing.org/reference/libraries/video/index.html)

Ví dụ về mã (10-3):

[cceN_cpp theme = "normal"] nhập xử lý.video. *;

Phim mov;

void setup () {

kích thước (640, 360);

nền (0);

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

}

void movieEvent (Movie movie) {

mov.read ();

}

void draw () {

hình ảnh (mov, 0, 0, 640, 360);

}

void keyPressed () {

if (key == 'p') {

mov.play ();

}

if (key == 's') {

mov.stop ();

}

if (key == 'd') {

mov.pause ();

}

} [/cceN_cpp]

Ảnh chụp màn hình Video:

Giải thích mã:

Câu đầu tiên "import processing.video. *;" Được sử dụng để tải thư viện video.

Câu thứ hai "Movie mov;" được sử dụng để khai báo đối tượng video. Trong số đó, chức năng của "Movie" tương tự như PImage.

Trong thiết lập hàm, tác dụng của "mov = new Movie (this," 1.mov ");" là tạo đối tượng và xác định đường dẫn đọc của nó. Tham số cuối cùng sẽ được điền bằng địa chỉ của nguồn video.

Thiết lập Behine, movieEvent đại diện cho sự kiện video. Nó được sử dụng để cập nhật và đọc thông tin video. "mov.read ()" trong sự kiện này có nghĩa là đã đọc.

Ngoại trừ hiển thị hình ảnh, chức năng hình ảnh cũng có thể hiển thị video. Chúng ta có thể coi đối tượng video như một hình ảnh động. Tham số đầu tiên, chúng ta điền vào tên biến của đối tượng video. Tham số thứ hai và thứ ba là tọa độ ngang và dọc được vẽ bằng video. Tham số thứ tư và thứ nhất quyết định chiều dài và chiều rộng của màn hình video.

Hàm.play () có nghĩa là chơi. Hàm.stop () có nghĩa là dừng và nó sẽ đặt lại video. Hàm.pause () có nghĩa là tạm dừng. Nó sẽ làm gián đoạn quá trình phát hiện tại, quá trình này sẽ tiếp tục cho đến khi hàm.play () được gọi.

Bước 6: Kiểm soát tốc độ video

Ví dụ về mã (10-4):

[cceN_cpp theme = "normal"] nhập xử lý.video. *;

Phim mov;

void setup () {

kích thước (640, 360);

nền (0);

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

}

void movieEvent (Movie movie) {

mov.read ();

}

void draw () {

hình ảnh (mov, 0, 0, width, height);

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

mov.speed (newSpeed);

}

void keyPressed () {

if (key == 'p') {

mov.play ();

}

if (key == 's') {

mov.stop ();

}

if (key == 'd') {

mov.pause ();

}

}

[/cceN_cpp]

Giải thích mã:

Hàm.speed () có thể được sử dụng để điều khiển tốc độ phát video. Khi giá trị tham số là 1, tốc độ chơi là bình thường. Khi giá trị vượt quá 1, sau đó tăng tốc; trong khi nó dưới 1, sau đó giảm tốc.

Bởi vì chúng tôi đã tạo biến cục bộ newSpeed và nhập nó vào hàm setSpeed (), tọa độ của chuột sẽ ảnh hưởng trực tiếp đến tốc độ phát video.

Đối với các ví dụ khác về video, bạn có thể tham khảo Thư viện - Video trong thư viện trường hợp.

Bước 7: Xử lý các sự kiện chung

Trước đây, chúng tôi đã giới thiệu chỉ sự kiện keyPressed (). Nó sẽ được kích hoạt sau khi nhấn bàn phím. Sau đây, chúng tôi sẽ giới thiệu các sự kiện phổ biến khác trong Xử lý cho các bạn.

Cách sử dụng của các sự kiện trên tương tự như keyPressed. Chúng không có trình tự trong việc viết mã. Nói cách khác, bất kể sự kiện nào bạn đặt trước hay sau thiết lập chức năng, bạn đều nhận được kết quả như nhau. Lệnh thực hiện chỉ liên quan đến điều kiện kích hoạt của chính sự kiện. Chỉ khi điều kiện được đáp ứng, thì nó sẽ thực thi. Các sự kiện trên đều rất dễ hiểu. Bạn chỉ cần làm một thí nghiệm nhỏ, sau đó bạn có thể nhanh chóng nắm bắt được công dụng của chúng.

Luồng sự kiện

Chúng ta có thể sử dụng một ví dụ để biết thứ tự thực hiện của các sự kiện.

Ví dụ về mã (10-5):

[cceN_cpp theme = "rạng đông"] void setup () {

frameRate (2);

println (1);

}

void draw () {

println (2);

}

void mousePressed () {

println (3);

}

void mouseMished () {

println (4);

}

void mouseReleased () {

println (5);

}

void keyPressed () {

println (6);

}

void keyReleased () {

println (7);

} [/cceN_cpp]

Giải thích mã:

Trong thiết lập chức năng, function frameRate () đã đặt tốc độ vận hành của chương trình là 2 khung hình / giây. Giảm tốc độ khung hình có thể giúp chúng tôi quan sát kết quả đầu ra trong bảng điều khiển trong trường hợp các sự kiện được kích hoạt sẽ ngay lập tức bị dữ liệu mới quét sạch.

Cố gắng di chuyển chuột, nhấp chuột, thả chuột và quan sát kết quả đầu ra. Nhận biết thứ tự thực hiện sự kiện thông qua println.

Điều đáng chú ý là các hàm vẽ không thể được viết vào các sự kiện khác ngoại trừ hàm vẽ, hoặc nó không thể hiển thị. Nếu chúng ta muốn kiểm soát việc ẩn và hiển thị các thành phần đồ họa thông qua các sự kiện như keyPressed, chúng ta có thể cân nhắc xây dựng biến bool làm phương tiện.

Các sự kiện sẽ thực hiện theo thứ tự. Chỉ sau khi tất cả mã trong sự kiện hiện tại được triển khai, nó sẽ thực thi mã trong sự kiện tiếp theo.

Bước 8: Ví dụ toàn diện - Bàn phím âm nhạc

Kết hợp với các sự kiện mới nắm được, chúng tôi có thể thêm các tương tác mới vào chương trình của mình. Tiếp theo, chỉ với vài phút, chúng ta có thể analog một bàn phím nhạc một cách dễ dàng.

Trang web video:

Ví dụ về mã (10-6):

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

SoundFile sound1, sound2, sound3, sound4, sound5;

boolean key1, key2, key3, key4, key5;

void setup () {

kích thước (640, 360);

nền (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");

}

void draw () {

nền (255, 214, 79);

DirectMode (TRUNG TÂM);

float w = width * 0,1;

float h = height * 0.8;

if (key1) {

điền (255);

} khác {

điền vào (238, 145, 117);

}

trực tràng (chiều rộng / 6, chiều cao / 2, w, h);

if (key2) {

điền (255);

} khác {

điền (246, 96, 100);

}

trực tràng (chiều rộng / 6 * 2, chiều cao / 2, w, h);

if (key3) {

điền (255);

} khác {

điền (214, 86, 113);

}

trực tràng (chiều rộng / 6 * 3, chiều cao / 2, w, h);

if (key4) {

điền (255);

} khác {

điền (124, 60, 131);

}

trực tràng (chiều rộng / 6 * 4, chiều cao / 2, w, h);

if (key5) {

điền (255);

} khác {

điền (107, 27, 157);

}

trực tràng (chiều rộng / 6 * 5, chiều cao / 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;

}

}

void keyReleased () {

if (key == 'a') {

key1 = sai;

}

if (key == 's') {

key2 = false;

}

if (key == 'd') {

key3 = false;

}

if (key == 'f') {

key4 = false;

}

if (key == 'g') {

key5 = sai;

}

} [/cceN_cpp]

Giải thích mã:

Chúng ta cần tạo nhiều đối tượng âm thanh để đọc thông tin âm thanh tương đối để phát các âm thanh khác nhau khi các phím khác nhau được kích hoạt.

Ở đây chúng tôi sử dụng một sự kiện keyReleased () mới. Chức năng của sự kiện này là khôi phục màu bàn phím về màu ban đầu. Khi nhả chìa khóa, nó sẽ được kích hoạt.

5 giá trị boolean được khai báo trong phần đầu được sử dụng để phát hiện trạng thái của khóa.

Bước 9: Ví dụ toàn diện - Bảng nhạc 1

Bên cạnh sự kiện bàn phím, sự kiện chuột là một điều tốt mà chúng ta phải sử dụng nó một cách linh hoạt. Ví dụ sau đây là để chúng tôi tạo một bảng nhạc, trong đó chúng tôi đã sử dụng hai sự kiện liên quan đến chuột.

Trang web video:

Ví dụ về mã (10-7):

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

SoundFile sound1, sound2, sound3, sound4, sound5;

boolean isDragging;

void setup () {

kích thước (640, 360);

nền (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");

}

void draw () {

if (isDragging) {

điền vào (107, 27, 157, 100);

hình elip (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]

Giải thích mã:

Chúng tôi hy vọng rằng chỉ khi chúng tôi đã nhấn chuột và kéo nó, chúng tôi có thể vẽ hình. Vì vậy, chúng ta cần xây dựng một biến boolean isDragging để có được trạng thái hiện tại.

Khi rê chuột, isDragging trở thành giá trị true để các hàm vẽ trong Draw sẽ được thực thi. Nó sẽ để lại dấu vết trên màn hình. Khi chúng ta thả chuột, isDragging trở thành giá trị sai. Vì vậy các hàm vẽ trong hàm draw sẽ ngừng thực thi.

Chúng tôi đã thiết kế một số điều kiện kích hoạt trong sự kiện kéo chuột. Ví dụ: khi tọa độ ngang của chuột nằm trong khoảng 100 và 105 pixel, nhạc sẽ tự động được phát. Điều này làm cho màn hình tạo ra một số chuỗi vô hình. Chỉ khi con chuột đi qua một số khu vực nhất định, nó sẽ kích hoạt âm nhạc tương đối.

Bước 10: Ví dụ toàn diện - Bảng màu âm nhạc 2 (Phiên bản cập nhật)

Hiệu ứng của ví dụ trên đã đủ tốt. Nhưng nếu chúng ta xem nó một cách cẩn thận, chúng ta sẽ thấy rất nhiều vấn đề. Ví dụ, khi con chuột di chuyển rất nhanh, nó sẽ để lại một điểm tròn trên màn hình mỗi khi di chuyển. Nó không phải là một đường thẳng mạch lạc. Trong khi đó, nó cũng gây ra một số rò rỉ âm nhạc. Trong khi khi chuột di chuyển rất chậm, đi qua vị trí tọa độ ngang giữa 100 và 105, nó sẽ phát nhạc nhiều lần trong thời gian rất ngắn, gây cảm giác bị kẹt. Tất cả những vấn đề này, chúng ta có thể giải quyết nó thông qua ví dụ dưới đây.

Bạn có thể xem video trong liên kết dưới đây:

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

Ví dụ về mã (10-8):

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

SoundFile sound1, sound2, sound3, sound4, sound5;

boolean isDragging;

void setup () {

kích thước (640, 360);

nền (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");

}

void draw () {

if (isDragging) {

đột quỵ (107, 27, 157, 100);

strokeWeight (10);

dòng (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]

Giải thích mã:

Ở đây chúng tôi đã sử dụng hai biến pmouseX và pmouseY có trong chính hệ thống Xử lý. Chúng tương tự như mouseX và mouseY nhưng những gì chúng thu được là tọa độ của chuột trong khung cuối cùng.

Trong Hàm vẽ, chúng ta đã sử dụng hàm line () để thay thế hàm ban đầu ellipse (). Điều này làm cho tọa độ của khung cuối cùng được kết nối trực tiếp với tọa độ của khung hiện tại. Vì vậy, chúng ta có thể vẽ các đường thẳng hoặc đường cong mạch lạc.

Trong sự kiện mouseDragged, chúng tôi đã thiết kế một điều kiện kích hoạt mới. Thông qua việc đánh giá xem tọa độ của khung cuối cùng và khung hiện tại có nằm trong cùng một phía hay không để biết liệu một tọa độ nào đó có bị cắt ngang hay không. Lấy điều kiện này làm ví dụ: "if ((mouseX - 100) * (pmouseX - 100) <0)". Trong số đó, từ giá trị âm và dương thu được từ "mouseX - 100", chúng ta có thể biết mouseX nằm ở bên phải hay bên trái của coodinate ngang 100. Tương tự với "pmouseX - 100". Do đó, khi hai điểm ở phía trước và phía sau không cùng phía, một số dương nhân với một số âm thì sẽ được một số âm mới. Như vậy điều kiện thực hiện được thỏa mãn.

Trên đây là một biểu thức đơn giản hóa, đã sử dụng khéo léo một thuật toán toán học nào đó - Hai số âm nhân với nhau sẽ tạo ra một số dương. Bạn cũng có thể chia nó thành hai tình huống để thảo luận riêng. Tuy nhiên, việc ghi điều kiện phán quyết phức tạp hơn nhiều. Các điều kiện phán đoán "if ((mouseX = 100) || (mouseX> 100 && pmouseX <= 100))" tương đương với các điều kiện xác định của mã nguồn.

Bước 11: Chức năng tương đối về điều khiển âm thanh & video

Các chức năng nêu trên là đủ cho các tình huống sử dụng chung. Nếu bạn muốn tìm hiểu sâu hơn, ở đây tôi đã thu thập một số chức năng phổ biến liên quan đến âm thanh và video cho bạn. Bạn có thể khám phá cách sử dụng của nó theo yêu cầu của riêng bạn.

Để biết thêm chi tiết, bạn có thể tham khảo các tài liệu từ trang web chính thức.

Âm thanh (https://processing.org/reference/libraries/sound/index.html)

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

Bài viết này đến từ nhà thiết kế Wenzy.

Bước 12: Đọc tương đối:

Hướng dẫn lập trình thú vị cho nhà thiết kế - Xử lý cảm ứng ban đầu

Hướng dẫn lập trình thú vị cho nhà thiết kế – Tạo chương trình xử lý đầu tiên của bạn

Hướng dẫn lập trình thú vị cho nhà thiết kế - Chạy hình ảnh của bạn (Phần một)

Hướng dẫn lập trình thú vị cho nhà thiết kế - Chạy hình ảnh của bạn (Phần hai)

Hướng dẫn lập trình thú vị cho nhà thiết kế – Kiểm soát quy trình chương trình- Tuyên bố vòng lặp

Hướng dẫn lập trình thú vị cho nhà thiết kế - Kiểm soát quy trình chương trình - Tuyên bố điều kiện (Phần một)

Hướng dẫn lập trình thú vị cho nhà thiết kế - Kiểm soát quy trình chương trình - Tuyên bố điều kiện (Phần thứ hai)

Hướng dẫn lập trình thú vị cho nhà thiết kế - Hàm tùy chỉnh và đệ quy Fractal

Hướng dẫn lập trình thú vị cho nhà thiết kế - Hàm tùy chỉnh và đệ quy Fractal

Hướng dẫn lập trình xử lý thú vị cho nhà thiết kế - Kiểm soát màu sắc

Bước 13: Nguồn

Bài viết này từ:

Nếu bạn có bất kỳ câu hỏi nào, bạn có thể liên hệ với : [email protected].

Đề xuất: