Return to Video

Special ProcessingJS functions

  • 0:00 - 0:03
    Cho tới giờ, bạn có thể nhận ra rằng ta đã định nghĩa
  • 0:03 - 0:07
    một hàm cụ thể mỗi khi muốn tạo một chương trình--
  • 0:07 - 0:09
    hàm `draw`.
  • 0:09 - 0:13
    Để gợi nhắc bạn, đây vẫn là chương trình ảnh động của chiếc xe.
  • 0:13 - 0:17
    Nó có biến này tên là 'x', giá trị bắt đầu từ 11.
  • 0:17 - 0:23
    Và sau đó, trong hàm `draw`, nó vẽ chiếc xe ở tọa độ 'x' đó,
  • 0:23 - 0:27
    và rồi +3 vào biến 'x' trong mỗi lần lặp.
  • 0:27 - 0:29
    Và kết quả là một chiếc xe hơi
  • 0:29 - 0:32
    di chuyển 3 pixel trên màn hình liên tục.
  • 0:32 - 0:35
    Như vậy, đó là cách chương trình hoạt động.
  • 0:35 - 0:38
    Nhưng bây giờ khi đã học cách tạo các hàm của riêng mình,
  • 0:38 - 0:42
    bạn có thể tự hỏi, thế còn hàm `draw` thì sao?
  • 0:42 - 0:44
    Tại sao nó luôn được đặt tên là 'draw`?
  • 0:44 - 0:46
    Đây có phải là một hàm tùy biến?
  • 0:46 - 0:49
    Và đó là những câu hỏi rất hay.
  • 0:49 - 0:52
    Như thấy, trong thư viện ProcessingJS,
  • 0:52 - 0:56
    hàm `draw` là một trong một số hàm được định nghĩa trước
  • 0:56 - 1:01
    cho phép các chương trình có quyền điều khiển nhiều hơn những gì đang diễn ra trong khung vẽ.
  • 1:01 - 1:05
    Hàm được định nghĩa trước là hàm đã được định nghĩa
  • 1:05 - 1:07
    bởi thư viện ProcessingJS.
  • 1:07 - 1:11
    Nhưng nó thường bắt đầu với một phần định nghĩa trống trơn.
  • 1:11 - 1:17
    Ví dụ: trong thư viện ProcessingJS, có đoạn code trông như thế này:
  • 1:17 - 1:19
    `var draw = function () {}`
  • 1:19 - 1:23
    và sau đó là không có gì cả, hoàn toàn trống rỗng.
  • 1:23 - 1:29
    Bây giờ, ta tải thư viện ProcessingJS cho mọi chương trình tại đây trên Khan Academy,
  • 1:29 - 1:31
    Vì vậy, bạn không bao giờ thấy đoạn code này.
  • 1:31 - 1:34
    Nhưng hãy tin tôi đi, nó tồn tại đấy.
  • 1:34 - 1:41
    Bây giờ tôi sẽ comment code đó lại, vì ProcessJS đã làm điều đó cho ta.
  • 1:41 - 1:45
    Và khi bạn định nghĩa lại `draw`, trong chương trình của chính mình,
  • 1:45 - 1:50
    định nghĩa mới này ghi đè lên định nghĩa trống trơn trước đó.
  • 1:50 - 1:52
    Và bây giờ hàm `draw`
  • 1:52 - 1:55
    thực sự làm nên những điều thú vị, giống như việc vẽ một chiếc xe hơi.
  • 1:55 - 2:01
    Giờ câu hỏi là, tại sao hàm `draw` được gọi đi gọi lại?
  • 2:01 - 2:06
    Chà, cũng là code trong thư viện ProcessingJS
  • 2:06 - 2:11
    thiết lập bộ hẹn giờ cho trình duyệt (browser timer) và gọi lại hàm 'draw' liên tục,
  • 2:11 - 2:14
    gọi đi gọi lại.
  • 2:14 - 2:19
    Ta phải đặt tên hàm là 'draw`, vì đó là tên của hàm
  • 2:19 - 2:22
    được gọi liên tục.
  • 2:22 - 2:28
    Nếu ta đổi tên cái này, ví dụ như đổi thành thành `drawCar`.
  • 2:28 - 2:34
    Và trước tiên, ta nhận được một lỗi undefined (chưa định nghĩa), vì vậy ta có thể gõ `var drawCar`.
  • 2:34 - 2:37
    Giờ bạn có thể thấy, nếu ta đổi tên này thành `drawCar`,
  • 2:37 - 2:40
    ta không thấy bất kỳ ảnh động nào nữa.
  • 2:40 - 2:45
    Và đó là vì chức năng này không còn được gọi nhiều lần nữa,
  • 2:45 - 2:47
    bởi nó không được đặt tên là 'draw'.
  • 2:47 - 2:51
    Vì vậy, ta phải đặt code muốn được gọi liên tục
  • 2:51 - 2:56
    bên trong một hàm được đánh vần chính xác là 'draw`.
  • 2:56 - 3:01
    Như vậy, tôi làm điều đó thêm một lần nữa và gọi `drawCar` từ đây.
  • 3:01 - 3:03
    Aha! Ta đã lấy lại.
  • 3:03 - 3:07
    Được rồi, nó cần được gọi là 'draw',
  • 3:07 - 3:13
    và điều này cũng có nghĩa là takhông nên đặt tên cho các hàm tùy biến của riêng mình `draw`,
  • 3:13 - 3:18
    trừ khi bạn muốn chúng được đối xử đặc biệt và được gọi đi gọi lại.
  • 3:18 - 3:24
    Và cũng cần nhớ rằng, bạn không thể có nhiều hàm có tên là 'draw`.
  • 3:24 - 3:28
    Chỉ định nghĩa hàm cuối cùng sẽ được tính.
  • 3:28 - 3:31
    Nếu ta có một 'rect' ở trong này--
  • 3:31 - 3:35
    Giờ ta có thể thấy rằng chiếc xe của ta sẽ không được vẽ nữa,
  • 3:35 - 3:40
    và chỉ có rect được vẽ, bởi vì chỉ có định nghĩa cuối cùng được tính.
  • 3:40 - 3:43
    Vì vậy, hãy bỏ cái đó đi.
  • 3:43 - 3:48
    Hàm 'draw' không phải là hàm duy nhất được định nghĩa trước
  • 3:48 - 3:50
    có hành vi đặc biệt này.
  • 3:50 - 3:53
    Ngoài ra còn có một loạt các hàm
  • 3:53 - 3:57
    phản hồi lại tương tác chuột và nhấn phím.
  • 3:57 - 4:02
    Giả sử ta muốn có một chương trình vẽ hình elip được tô màu
  • 4:02 - 4:05
    bất cứ vị trí nào người dùng di con trỏ.
  • 4:05 - 4:09
    Ta a có thể làm điều đó với một hàm như sau.
  • 4:09 - 4:16
  • 4:20 - 4:23
    Được rồi, ồ, đẹp quá.
  • 4:23 - 4:27
    Bây giờ, hàm này đang được gọi đi gọi lại,
  • 4:27 - 4:31
    ngay cả khi người dùng không di chuyển con trỏ như lúc này đây.
  • 4:31 - 4:35
    Và chương trình này đang hoạt động, nó làm những gì ta muốn,
  • 4:35 - 4:38
    nó vẽ những hình elip xinh đẹp này trên khắp màn hình.
  • 4:38 - 4:42
    Nhưng hóa ra, có cách tốt hơn để làm điều tương tự
  • 4:42 - 4:44
    một cách hiệu quả hơn.
  • 4:44 - 4:52
    Ta có thể thay hàm `draw` thành` mouseMoved` và xem nào.
  • 4:52 - 4:55
    Và nó vẫn hoạt động.
  • 4:55 - 4:58
    Bạn thấy đấy, môi trường của ta kiểm tra các chương trình
  • 4:58 - 5:01
    để xem chúng đã định nghĩa hàm `mouseMoved` chưa,
  • 5:01 - 5:05
    và nếu vậy, nó gọi chức năng đó bất cứ khi nào người dùng di chuyển con trỏ.
  • 5:05 - 5:10
    Nhưng nó sẽ không được gọi nếu người dùng không di chuyển con trỏ.
  • 5:10 - 5:13
    Như vậy, trước đây, ta đã gọi code trong hàm `draw`
  • 5:13 - 5:16
    khi ta không cần, lặp đi lặp lại.
  • 5:16 - 5:20
    Và bây giờ, ta chỉ gọi code này trong `mouseMoved`
  • 5:20 - 5:23
    khi mouseX hoặc mouseY thực sự thay đổi giá trị.
  • 5:23 - 5:27
    Như vậy, chương trình hoạt động hiệu quả hơn, và đó là một điều tốt.
  • 5:27 - 5:31
    Nói chung, chỉ muốn thay đổi kết quả chương trình
  • 5:31 - 5:35
    Khi người dùng di chuyển con trỏ, tốt hơn là nên đặt code đó
  • 5:35 - 5:37
    bên trong hàm `mouseMoved`.
  • 5:37 - 5:41
    Và có một loạt các hàm được định nghĩa trước như thế,
  • 5:41 - 5:45
    bạn có thể xem thêm ví dụ trong tài liệu.
  • 5:45 - 5:49
    như là `mousePression`,` mouseRelazed`, `keyPression`, v.v.
  • 5:49 - 5:54
    Hãy nhớ rằng, nếu bạn muốn sử dụng một hàm được định nghĩa đặc biệt trước đó,
  • 5:54 - 5:59
    như `mouseMoved` hoặc` draw`, đánh vần thật chính xác và sử dụng đúng.
  • 5:59 - 6:03
    Nếu không, hãy chắc chắn rằng định nghĩa các hàm tùy biến của mình
  • 6:03 - 0:00
    bằng một cái tên mới, độc đáo hơn.
Title:
Special ProcessingJS functions
Description:

more » « less
Video Language:
English
Duration:
06:08

Vietnamese subtitles

Incomplete

Revisions