30/09/2018, 17:07

Hỏi về sử dụng hàm mouseClicked= function()

Em chào các Bác EM mới bắt đầu học JS thông qua trang của Khanacademy. có 1 phần em muồn hỏi về hàm mouseClicked , hàm này có cho biến vào được không ạ? Ví dụ như hàm cơ bản này chẳng hạn:

mouseClicked = function() {
    ellipse(mouseX, mouseY, 20, 20);
};

khi click chuột thì sẽ có hình tròn với w=20, h=20 hiện ra. Tuy nhiên nếu em muốn thay 2 kích thước này bằng 2 biến là a,b để có thể thay đổi kích thước của elip nếu muốn thì không đc ạ!; code của em như sau:

mouseClicked = function(a,b) {
    ellipse(mouseX, mouseY, a, b);
};
mouseClicked(12, 30);

Phiền các tiền bối giúp em với

Dang H. viết 19:22 ngày 30/09/2018

mouseClicked() có vẻ là hàm tự viết. Bạn có thể sửa lại được. Còn nếu là event của browser thì chịu

Coulson viết 19:15 ngày 30/09/2018

Bạn đưa nguyên file code lên thì dễ hiểu hơn.
mình không hiểu mouseClicked được gọi chỗ nào, nên không biết có truyền tham số được hay không

Cuong viết 19:21 ngày 30/09/2018

https://www.khanacademy.org/computer-programming/var-mouseclicked-function/1897113673

Dạ, em đưa link của em đang học theo trên Khanacademy đây ạ!
Nếu em không viết ngay kích thước của hình em muốn vẽ trên giao diện bên phải như code mà để nó là biến a, b rồi gọi lại hàm kèm theo kích thước mong muốn thì khi click chuột không vẽ được trên giao diện nữa các Bác ạ!

Còn code của em (cái mà không chạy được ) nó thay bằng như thế này ạ:

mouseClicked = function(a,b) {
    ellipse(mouseX, mouseY, a, b);
};
mouseClicked(12,40);
mouseClicked(40,40);

Em xin cám ơn các Bác

Dang H. viết 19:15 ngày 30/09/2018

Code bạn đang học không phải là JavaScript thuần mà nó sử dụng thư viện ProcessingJS.
Theo cách hoạt động của thư viện này (nếu mình hiểu đúng) thì không thể truyền tham số vô hàm mouseClicked được đâu vì bạn không gọi nó mà do thư viện ProcessingJS gọi.

  • Hàm mouseClicked được khai báo trong thư viện ProcessingJS
  • Hàm mouseClicked được định nghĩa (implemented) trong code của bạn
  • Khi bạn click chuột trên canvas, thư viện ProcessingJS sẽ làm 2 việc:
    • Gán tọa độ chuột vào 2 biết toàn cục mouseX, mouseY
    • Kiểm tra nếu hàm mouseClicked được định nghĩa hay chưa, nếu có thì sẽ gọi thực thi hàm đó: mouseClicked() mà không có tham số truyền vào

Nếu bạn muốn thay đổi kích thước của ellipse thì bạn phải gán giá trị vào 2 biến toàn cục bằng cách nào đó, sau đó truyền nó vào hàm ellipse()

Bài liên quan
0