Giờ thứ 01: Làm quen với as giờ thứ 02: Sử dụng Action panel



tải về 0.7 Mb.
trang3/5
Chuyển đổi dữ liệu30.08.2016
Kích0.7 Mb.
#29200
1   2   3   4   5






  • Bạn có thể hợp nhiều dữ kiện lại chung với nhau. Ví dụ bạn có một nút và nút đó có phím tắt là "b". Vậy khi bạn nhấn nút đó hay là nhấn phím "b" thì code của nút đó sẽ được kích hoạt.

    ActionScript
    on (keyPress "b", release) {
        trace("'b' pressed or button clicked.");
    }

    Các ví dụ trên đều có trong movie mẫu 09keybutton.fla



    2. Phát hiện qua Đối tượng phím (key object)

    Mặc dù nút rất hữu ích trong việc phát hiện khi người dùng nhấn phím, nhưng nút lại không thể phát hiện được trường hợp khi người dùng nhấn phím và không nhất tay. Ví dụ nếu bạn làm một game bằng Flash, và trong đó người chơi cho thể làm cho các nhân vật trong game di chuyển liên tục nếu như họ nhấn phím mũi tên và không nhât tay lên.

    Cho những trường hợp như vậy, bạn phải dùng đối tượng Key. Đối tượng Key là tập hợp của một số hàm (function) và hằng số (constant) được xây dựng sẳn trong Flash. Bạn có thể dùng các hàm và hằng số này để biêt được các phím đang bị nhấn hay không. Ví dụ, nếu muốn kiểm tra coi phím mũi tên trái có bị đang nhấn hay không thì dùng đoạn code sau:

    ActionScript

    if (Key.isDown(Key.LEFT)) {


       trace("The left arrow is down");
    }

    Hàm Key.isDown sẽ cho ra kết quả đúng hay sai phụ thuộc vào thông số có phải là phím đang bị nhấn hay không. Hằng số Key.LEFT tượng trưng cho phím mũi tên trái. vậy khi mũi tên trái bị nhấn thì output window sẽ cho ra hàng chữ "The left arrow is down". Dưới đây là các hằng số tương tự như Key.LEFT đề cập ở trên



    • Key.BACKSPACE

    • Key.ENTER

    • Key.PGDN

    • Key.CAPSLOCK

    • Key.ESCAPE

    • Key.RIGHT

    • Key.CONTROL

    • Key.HOME K

    • ey.SHIFT

    • Key.DELETEKEY

    • Key.INSERT

    • Key.SPACE

    • Key.DOWN

    • Key.LEFT

    • Key.TAB

    • Key.END

    • Key.PGUP

    • Key.UP

    Nếu bạn muốn kiểm tra xem nếu những phím bình thường đang bị nhấn thì bạn phải dùng Key.getCode để lấy mã số của phím đó để dùng trong hàm Key.isDown. Đây là code mẫu khi bạn muốn kiểm tra phím "a"

    ActionScript

    if (Key.isDown(Key.getCode("a")) {


       trace("The left arrow is down");
    }

    Cho 2 ví dụ trên, bạn có thể coi source Fla 09keyobject.fla



    3. Key Listener

    Key listener được dùng để quan sát bàn phím và thông báo cho Flash khi phím được nhấn.

    Ở cách thứ 2 chúng ta dùng đối tượng Key để kiểm tra coi phím có bị nhấn hay không, nhưng nó không thể biết chính xác lúc nào thì phím bị nhấn. Nếu mà người dùng nhấn phím quá nhanh, trước khi onClipEvent(enterFrame) kịp kích hoạt đối tượng key để kiểm tra thì Flash sẽ không bao giờ biết được người dùng đã nhấn phím. Một bất tiện nữa khi dùng cách thứ 2 là nếu bạn muốn người dùng nhấn phím nhiều lần thì đối tượng Key sẽ không phân biệt được đó là 1 lần nhấn dài hay là nhiều cái nhấn thật nhanh.

    Ví vậy ở Flash MX, MM cho chúng ta thêm một lựa chọn nữa là Key listeners. bạn có thể dùng "listener" (có thể hiểu nó như một quan sát viên) để theo dõi sự kiện của bàn phím và thông báo cho Flash ngay khi phím được nhấn.

    Listener có 2 phần. Phần đầu là phần tạo listener. Bạn phải ra lệnh cho listener này chú ý vào sự kiện của bàn phím. Đây là code cho tạo listener

    ActionScript

    Key.addListener(_root);


    Lệnh Key.addlistner tạo listener cho đối tượng trong thông số là _root. Và đối tượng này sẽ được thông báo về sự kiện của bàn phím.

    Trong đoạn code trên, _root là đối tượng được thông báo về sự kiện của bàn phím. Nhưng khi nhận được thông báo thì _root phải làm gì? Vì vậy chúng ta cần phải viết code xử lý sự kiện cho _root. Ví dụ đoạn code sau sẽ được thực hiện khi _root nhận được thông báo về sự kiện bàn phím.

    ActionScript

    _root.onKeyUp = function() {


       trace(Key.getAscii());
    }

    Khi người dùng nhấn phím, rồi nhất tay lên thì sẽ tạo ra sự kiện onKeyUP, và sự kiện này được thông báo tới _root (bạn có thể thay thế _root bắng bất kỳ đối tượng nào) và sau đó thì hàm Key.getAscii() sẽ cho ra kết quả là mã số ASCII tương ứng với phím vừa được nhấn, ví dụ A = 65, B = 66 .v.v

    Bạn có thể xem cái fla mẫu 09keylistener.fla, trogn đó có đoạn code trên (lưu ý là trong fla này sẽ không có gì hết ngoài đoạn code AS ở frame đầu tiên)

    Nếu bạn muốn biết phím được nhất là gì thay vì ASCII code thì bạn có thể dùng String.fromCharCode() đễ cho ra kết quả bạn muốn tìm. Thay dòng trace(Key.getAscii()); băng trace(String.fromCharCode(Key.getAscii()));

    Thật ra ngoài 3 cách trên, còn một cách nữa là dùng bộ xử lý sự kiện onClipEven của movie clip để theo dỏi sự kiện keyDown, keyUp, nhưng cách này không còn được dùng trong Flash MX nữa, vì vậy bạn chỉ có thể cách này trong các Flash trước MX thôi.

    Bài Tập: Dùng phím để di chuyển movie clip

    1. Tạo một file Flash mới
    2. Tạo một movie clip đơn giản
    3. Gắn đoạn code này vào movie clip đó

    ActionScript

    onClipEvent(enterFrame) {


       if (Key.isDown(Key.LEFT)) this._x -= 5;
       if (Key.isDown(Key.RIGHT)) this._x += 5;
       if (Key.isDown(Key.UP)) this._y -= 5;
       if (Key.isDown(Key.DOWN)) this._y += 5;
    }[/b]
    Đoạn code trên kiểm tra 4 phím mũi tên và di chuyển movie clip theo hướng của mũi tên. Bạn hãy thử movie coi sao

    4. Thay đổi đoạn code trên cho hoàn chỉnh hơn: tạo 2 biến [b]x, y[/b] có giá trị tương đương với vị trí ban đầu của movie clip, và lập giá trị cho biến [b]speed[/b] bắng 5. Mổi frame của movie, mình sẽ kiểm tra 4 phím mũi tên và điều chỉnh giá trị của 2 biến [b]x,y[/b] chứ không điều chỉnh vị trí của movie clip, sau đó phối hợp với biến [b]speed[/b] để tìm vị trí mới cho movie clip, rồi mới di chuyện movie clip tới đó:


    [code]onClipEvent(load) {
       x = this._x;
       y = this._y;
       speed = 5;
    }

    onClipEvent(enterFrame) {


       if (Key.isDown(Key.LEFT)) {
           x -= speed;
       }
           if (Key.isDown(Key.RIGHT)) {
           x += speed;
       }
           if (Key.isDown(Key.UP)) {
           y -= speed;
       }
           if (Key.isDown(Key.DOWN)) {
           y += speed;
       }

       this._x = x;


       this._y = y;
    }

    Đoạn code trên có 2 lơi điểm. Thứ nhất, chúng ta tìm vị trí mới của movie clip trước khi chúng ta di chuyển movie clip tới đó, và như vậy chúng ta có thể kiểm tra vị trí mới có hợp lý không (áo dụng rât nhiều trong game), và thứ hai là rất tiện cho chúng ta thay đổi tốc độ di chuyển của movie clip, chỉ cần thay đổi giá trị của biến speed


    Nhập văn bản

    Trong Flash, người dùng có thể nhẫp văn bản vào các khung, và bạn có thể dùng AS để lấy những văn bản đó. Để cho người dùng có thể nhập văn bản, bạn phải tạo khung input text và tạo cho 1 varible để tương ứng với gía trị trong khung input text đó. (nếu bạn nào chưa biết tạo input text thì có thể download 3 cái CD hướng dẫn ơ bên box tài liệu để tham khảo thêm)



    Các chức năng và thao tác làm việc với chuỗi ký tự (string

    Chúng ta có rất nhềiu thao tác với chuỗi ký tự:

    1. Ghép 2 chuỗi lại với nhau: dùng ký hiệu +. Ví dụ bạn có variable tên là myVariable có giá trị là "Hello", và muốn ghép chữ "world" vào sau đó thì dùng như sau: myVariable = myVariable + "world" và kết quả có được sẽ là "Hello world". Bạn cũng có thể ghép nhiều hơn 2 chuỗi lại với nhau bằng cách trên.

    2. Substrings. Substring là một chuổi ký tự nhỏ trong 1 chuổi ký tự khác. Ví dụ "ell" là substring của "hello world" hay là "hello" hay là "elle" hay "hell".

    Bạn có thể lấy bất cứ substring nào của 1 string với cú pháp sau: String.substring(start, end));. String là đối tượng chuỗi mà bạn muốn trích ra một phần, start là số thứ tự của ký tự bắt đầu cho chuổi bạn muốn lây, và end là số thự tự bắt đâu cho phần bạn không muốn lấy. Lưu ý rắng ký tự đầu tiê sẽ có số thự tự là 0. Ví dụ với đoạn code sau, output window sẽ cho ra hàng chữ "lo W"

    ActionScript

    var myString = "Hello World.";


    trace(myString.substring(3,7));

    Ngoài ra còn 1 cách nữa dùng tương tự như cách trên nhưng chỉ khác về thông số và có cú pháp như sau: String.substr(start, length);. thông số 1 cho số thứ tự của chữ cái đầu tiên và thứ hai cho chiều dài của chuỗi. Đoạn code sau cũng sẽ có kết quả tượng tự như ở cách 1



    ActionScript

    var myString = "Hello World.";


    trace(myString.charAt(6));

    Các hàm của đối tượng String

    Sau đây là một số hàm tiêu biểu của đối tượng String.

    1. indexOf: dùng để tìm số thứ tự của một ký tự hay một chuỗi nhỏ trong đối tượng String. Nếu hàm indexOf tìm không thấy ký tự hay chuỗi nhỏ thì sẽ cho ra kết quả -1. Đây là cú pháp:myString.indexOf(substring,start)); substring là ký tự hay chuỗi mình muốn tìm, start là số thự tự mình bắt đầu tìm trong đối tượng String. Ví dụ:

    ActionScript

    var myString = "Hello World.";


    //output: 6
    trace(myString.indexOf("W",0));
    //output: 2
    trace(myString.indexOf("llo",0));

    2. lastIndexOf: tương tự như indexOf nhưng chúng ta tìm ký tự cuối cùng đi ngược lên tớiký tự đầu tiên.



    ActionScript

    var myString = "Hello World.";


    //output: 2
    trace(myString.indexOf("l",0));
    //output: 9
    trace(myString.lastIndexOf("l"));

    3. toUpperCase/toLowerCase: dùng để đổi chuỗi từ viềt thường sang viết hoa và ngược lại



    ActionScript

    var myString = "Hello World.";


    //output: HELLO WORLD
    trace(myString.toUpperCase());
    //output: hello world
    trace(myString.toLowerCase());

    4. length: là đặc tính của Sring dùng để tính chiều dài của chuỗi.



    ActionScript

    var myString = "Hello World.";


    //output: 12
    trace(myString.length);

    Bài tập:


    1. mở file 09form-noscripts.fla
    2. kiểm tra tên của variable của mỗi input text field qua property panel
    3. Thêm đoạn mã sau vào nút CLEAR

    ActionScript

    on (release) {


       clearForm();
    }

    4. thêm đoạn mã sau vào nút SUBMIT



    ActionScript

    on (release) {


       submitForm();
    }

    5. Thêm đoạn code sau vào frame đầu tiên của movie



    ActionScript

    function clearForm() {


       firstName = "";
       middleInitial = "";
       lastName = "";
       address = "";
       city = "";
       state = "";
       zip = "";
       phone = "";
       comments = "";
    }

    function submitForm() {


       if (middleInitial.length == 1) {
           trace("Name: "+firstName+" "+middleInitial+". "+lastName);
       }  else {
           trace("Name: "+firstName+" "+lastName);
       }
    }

    Rồi bạn test movie.


    Giờ thứ 10: Tạo Và Điểu Khiển Văn Bản, Creating and Controlling Text

    Dynamic Text

    Bạn cũng có thể hiển thị văn bản bằng dynamic text field. Khác với Input field mà bạn làm quen trong giờ số 9, dynamic text field chỉ cho phép AS thay đổi nội dung văn bản chứ không phải là người dùng. Vì nội dung, hình thức của văn bản có thể thay đổi bất cứ lúc nào nên mới gọi là dynamic text

    Trước tiên bạn tạo dynamic text bẳng dụng cụ text trên thanh toolbar, nhưng thay vì chọn "Input Text" ở trong property panel, bạn chọn "Dynamic Text"

    Bước kế tiếp là nối nội dung của văn bản trong dynamic text field với một variable bằng cách viết tên của variable đó vào trong khung Var ở trong propery panel. Ví dụ như bạn đặt variable myText vào trong khung Var thì khi bạn thay đổi giá trị của myText thì văn bản trong dynamic text field cũng thay đổi giống như giá trị của biến myText. Ngoài ra bạn còn có thể thay đổi một số lựa chọn cho dynamic text field như "Single", "Multiline", or "Multiline No Wrap" để xử lý trường hợp nội dung của văn bản quá dài và cònn nhiều lựa chọn khác nữa. (Nếu bạn chưa nắm vững phần này thì có thể tham khảo thêm về sử dụng Flash trong CD được post box tài liệu)



    Định dạng văn bản theo HTML
    (HTML format)

    Để định dạng văn bản kiểu HTML, bản phải cho phép dynamic text field chấp nhận định dạng HTML (click vào HTML icon ở trên property panel) và sau đó bạn có thể dùng thẻ HTML để định dạng văn bản của bạn. Ví dụ đoạn code này sẽ tạo văn bản sau:



    CODE

    myText = "This text is bold.


    ";
    myText += "This text is italic.
    ";
    myText += "This text is underlined.
    ";
    myText += "This text is red.
    ";
    myText += "This text is Arial Black.
    ";
    myText += "This text is large.
    ";
    myText += "This text is linked.
    ";

    QUOTE

    This text is bold.

    This text is italic.

    This text is underlined.

    This text is red.

    This text is Arial Black.

    This text is large.

    This text is linked.


    Siêu liên kết (hyper link) trên có tác dụng giống như trong HTML như khác 1 điều là không có gạch dưới


    Sau đây là những thẻ HTML có thể dùng trong Flash MX

    • : viết đậm

    • : viết nghiêng

    • : gạch dưới

    • : kiểu chữ

    • : cỡ chữ

    • : màu chữ

    • : link

    • : Đọan văn


    • : Xuống hàng



    Đối Tượng TextFormat

    Còn một cách khác để định dạng cho văn bản là dùng đối tượng TextFormat. Để làm được điều này, bạn cần phải tạo ra 1 biến từ đối tượng TextFormat. Sau đó bạn có thể định giá trị cho các thuộc tính của nó. Ví dụ bạn muốn kiểu chữ Arial Black, cỡ 26, và màu đỏ thì dùng đọan code sau:



    CODE

    myFormat  = new TextFormat();


    myFormat.font = "Arial Black";
    myFormat.size = 36;
    myFormat.color = 0xFF0000;

    textInstance.setTextFormat(myFormat);


    Bạn có thể dùng đối tượng TextFormat như là stylesheet trong các file HTML, một khi bạn tạo nó ra thì bạn có thể dùng nó ở bất cứ chổ nào trong movie


    Bạn có thể coi các đọan code trên trong file mẫu: 10formattext.fla

    Variable ở ngoài Flash

    Bạn có thể lấy biến từ ngoài trang HTML vào trong Flash để thay đổi nội dung của Flash hay dùng vào bất cứ chuyện gì. Ví dụ bạn phải làm 30 cái banner bằng Flash cho 30 trang web, thì bạn có thể chỉ làm 1 cái banner thôi, nhưng thay đỗi nội dung tuỳ theo từng trang web. Muốn nhập văn bản hay giá trị của biến nào từ HTML, bạn chỉ cần thêm vài chữ vào sau cái tên của movie trong phần trong HTML.. Đoạn mã HTML sau đây nhập giá trị của biến txtName vào trong Flash



    HTML
    và trong thẻ thì bạn thêm phần variable và giá trị vào sau tên file

    HTML

    src="10banner.swf?txtName=Dominico Savio!">

    Khi movie load thì nó sẽ tự tạo variable "txtname" và đặt giá trị cho biến này bằng "Dominico Savio". Bạn có thể xem trang 10banner.html, 10banner.fla trong cái source file để xem chi tiết hơn.
    Bạn có thể làm nhiều giá trị một lúc cũng bằng cách này 10banner.swf?txtName=Dominico Savio!&gender=male"
    Ngoài lấy biến từ HTML, bạn còn có thể lấy biến từ các text file. Cách này thích hợp khi bạn có nhiều biến để nhập vào Flash, hay giá trị của các biến quá dài để gắn vào thẻ HTML. Bạn chỉ cần dùng lệnh loadVariables() để làm được điều này. Ví dụ:

    CODE

    loadVariables("10external.txt", _root);

    Bạn có thể coi thêm về cách dùng loadVariables() ở bên box ActionScript

    [Bài Tập


    Một ví dụ đơn giản áp dụng các điều mà bạn vừa học trong bài này là làm một cái "news ticker" như dưới dây:


    Dòng chữ sẽ chạy từ bên phải qua bên trái cho suốt bản tin. Bạn có thể tham khảo source fla: 10ticker.fla và test nó để có khái niệm thêm về "news ticker"
    1. Tạo movie mới

    2. Tạo dynamic text field, với độ cao chỉ vừa 1 hàng, và dài bằng chiều ngang của stage, để cho dễ nhận, bạn có thể viết vài chư trong đó, như là "text goes here"

    3. Tạo variable cho text field này là text

    4. Chọn font, nên dùng kiểu chữ tương tự như Courier New, sao cho bề ngang của mỗi chư bằng nhau

    5. Con text field rồi nhấn F8 để đổi thành Movie Clip, và đặt cho nó 1 cái tên như thế nào tuỳ bạn

    6. Sau đó thì gắn đoạn script sau vào movie



    CODE

    onClipEvent(load) {


       // đặt bản tin
       tickerText = "News Alert: ";
       tickerText += "Stock prices shoot up sharply with good earnings reports. ";
       tickerText += "The first manned flight to Mars prepares to leave Earth orbit. ";
       tickerText += "Your favorite sports team wins championship. ";
       tickerText += "Scientists find cure for major diseases. ";
       firstChar = 0; // bắt đầu ở chữ cái đầu tiên
       lineLength = 50; // số chữ cái tối đa trên news ticker
       // thêm các khoảng trống vào trước dòng tin
       for(var i=0;i       tickerText = " " + tickerText;
       }
    }
    onClipEvent(enterFrame) {
       // phát bản tin
       text = tickerText.substr(firstChar,lineLength);
       // thêm chữ cái kê tiếp
       firstChar++;
       // phát lại bản tin sau mỗi lần kết thúc
       if (firstChar > tickerText.length) {
           firstChar = 0;
       }
    }

    Trước tiên bạn tạo ra biến tickerText để chứa bản văn news ticker, biến firstChar để chứa giá trị của chữ cái đầu tiên sẽ thấy trong news ticker, và lineLenght là số chữ cái có thể xuất hiện một lúc trên news ticker. Và tất cả các đểu được cho vào trong bộ sử lý dữ kiện onLoad


    Trong onEnterFrame, Flash sẽ lấy 50 chữ cái đầu tiên bỏ vào biến text (ở trong dynamic text field) để cho nó hiển thị lên màn hình. Sau đó di chuyển sang chữ cái thứ 2 bằng câu firstChar++;, và sau cùng là kiểm tra, nếu bản tin đã được phát hết thì phát lại từ đầu.

    6. Bạn có thể thay đổi giá trị của lineLenght và giá trị của bản văn trong tickerText để hiểu hơn về 2 biến này

    7. Bây giờ bạn hãy thữ dùng loadVariable() để nhập bản tin từ text file vào coi có được không. Nếu không thì hãy trở lại đây hỏi mình nhe
    Happy flashing

    Giờ thứ 11: Làm việc với các con số, Chương này rất hay và bổ ích!
    Chúng ta đã nghiên cứu về text và strings trong các chương trước. Bây giờ chúng ta sẽ nghiên cứu về những con số. Bạn sẽ phải đụng độ với những con số trong Action Script trong nhiều trường hợp, vì vậy bạn cần phải hiểu làm sao để sử dụng chúng.

    Những phép toán (operator) và những hàm (function) về số

    Những phép toán đơn giản
    Chúng ta cũng đã học qua các phép toán đơn giản rồi. Bây giờ hãy xem lại nhé. Dấu + và dấu - sẽ thực hiện phép toán cộng và trừ, dấu * thực hiện phép nhân, dấu / thực hiện phép chia.
    Ngoài ra, bạn cũng có thể sử dụng những phép toán như +=, -=, *=, /= để làm đơn giản cho code của bạn. Lấy ví dụ hai câu lệnh dưới đây sẽ thực hiện cùng một công việc là cộng thêm 7 và biến a

    CODE

    a = a + 7;


    a += 7;

    Những phép so sánh
    Những phép toán so sánh như == để so sánh hai số xem có bằng nhau không, > (lớn hơn), < (nhỏ hơn), <= (nhỏ hơn hoặc bằng), >= (lớn hơn hoặc bằng). Trong Action Script chúng ta có thể so sánh một số nguyên với một số thực. Ví dụ như 7.2 sẽ lớn hơn 7.

    Math.abs
    Đối tượng Math chứa một tập hợp các hàm xử lý các con số. Hàm Math.abs sẽ trả về giá trị tuyệt đối của một số. Bạn hãy thử đoạn code này xem kết quả thế nào nhé:

    CODE

    trace(Math.abs(-7));


    Math.round
    Nếu bạn có một số thực, nhưng bạn lại muốn hiển thị cho người dùng xem dưới dạng số nguyên thay vì phải cho họ xem các con số phần thập phân, bạn hãy sử dụng hàm Math.round. Thử nhé:

    CODE

    trace(Math.round(7.2));



    Math.ceil, Math.floor
    Hai hàm khác dùng để làm tròn số thực thành số nguyên là Math.ceil và Math.floor. Hàm Math.ceil sẽ làm tròn số lên và Math.floor sẽ làm tròn số xuống. Thử nhé:

    CODE

    trace(Math.ceil(7.2));


    trace(Math.floor(8.3));

    Math.min, Math.max
    Các bạn có thể sử dụng hai hàm này để tìm số lớn hơn và số nhỏ hơn trong hai số. Ví dụ hàm Math.min(4, 5); sẽ trả về 4, Min.math(4, 5); sẽ trả về 5

    Math.pow
    Đây là hàm để lấy lũy thừa, cũng đơn giản thôi, tham số thứ nhất là cơ số, tham số thứ hai là lũy thừa. Ví dụ bạn muốn lấy 4 luỹ thừa 3 thì viết thế này

    CODE

    Math.pow(4, 3);



    Math.sqrtĐây là hàm để tính căn, nhưng mà mình xin nói trứơc luôn là ngoài hàm Math.sqrt, bạn còn có thể sử dụng hàm Math.pow với lũy thừa nhỏ hơn 1 để tính căn. Ví dụ muốn lấy căn 2 của 4 thì có thể sử dụng

    CODE

    Math.pow(4, .5);


    hoặc
    Math.sqrt(4);
    Cả hai cách trên đều ra cùng một kết quả là 2.


    Hàm số lượng giác

    Những hàm của object class mà các bạn được biết ở trên có vẻ như rất dễ học. Nhưng còn những hàm về lượng giác như sin, cosin thì “khó nuốt” hơn nhiều. Mặc dù bạn có thể bỏ qua những hàm này nhưng những hàm lượng giác này rất hữu ích và hay trong việc tạo những ứng dụng trong Flash. Vậy chúng ta hãy cùng tìm hiểu cách nó làm việc nhé!


    Hàm sin và cosin sử dụng qua Math.sin và Math.cosin, biểu diễn mối quan hệ giữa đường thẳng với đường cong của một đường tròn.
    Hình dưới đây biểu diễn một vòng tròn với một số điểm được đánh dấu bằng các chữ. Hãy tưởng tượng tâm của vòng tròn ở toạ độ 0,0; bán kính của đường tròn bằng 1. Vì thế, điểm trên cùng sẽ có toạ độ 0,1 và điểm tận cùng bên phải sẽ có toạ độ 1,0

    Bây giờ bạn hãy tưởng tượng vòng tròn trên là một đường thẳng. Bắt đầu từ điểm “a” có toạ độ 1,0 đến điểm 0,-1 qua -1,0 rồi qua 0,1 và cuối cùng trở về 1,0.


    Trong Flash, và cũng như trong các ngôn ngữ lập trình khác, chúng ta định vị một vật bất kỳ bằng toạ độ x, y của chúng. Vì thế, việc chuyển một điểm trên đường thẳng thành một điểm có toạ độ x, y trên đường tròn rất hữu dụng. Đó là những gì mà hàm sin và cosin thực hiện. Ví dụ như chúng ta đặt điểm “a” là điểm bắt đầu của đường thẳng của đường tròn, bạn có sử dụng hàm sin và cosin của 0 để tính toạ độ x, y của điểm “a” trên đường tròn. Tất nhiên, Math.cos(0) sẽ trả về giá trị 1, Math.sin(0) sẽ trả về giá trị 0. Kết quả sẽ trả về toạ độ của điểm “a” 1,0
    Vậy điểm “c” sẽ nằm ở đâu trên đường tròn? Nếu duỗi đường tròn ra sẽ có độ dài bằng 6.28 lần bán kính, do bán kính bằng 1 nên độ dài sẽ bằng 6.28. Đây là xuất xứ của hằng số pi. Pi bằng 3.14, bằng một nửa độ dài của đường tròn.
    Độ dài của đường tròn là 6.28 thì một phần tư độ dài đường tròn là 1.57. Điểm đó tương ứng với điểm “c”. Hàm Math.cos(1.57) sẽ trả về một giá trị rất nhỏ, gần bằng 0. Hàm Math.sin(1.57) sẽ trả về giá trị gần bằng -1. Chỉ gần bằng chứ không bằng vì hằng số pi không chính xác bằng 3.14, chỉ là gần bằng thôi.
    Bạn có thể sử dụng cách này để chuyển các điểm trên đường tròn thành điểm có toạ độ x,y
    Vậy thì nó có ích như thế nào? Giả sử như bạn muốn tạo một movieclip bay quanh màn hình trong một vòng tròn. Làm sao để làm được điều đó? Nếu làm bằng frame có thể phải tốn hàng trăm frame . Hoặc cách khác là có thể dùng hàm Math.cos và Math.sin để tính chuyển sang toạ độ x,y quanh vòng tròn.
    Trong đoạn code dưới đây, khi cộng thêm n, movie clip sẽ chuyển động dọc theo đường tròn. Hàm Math.cos sẽ tính ra giá trị x và hàm Math.sin sẽ tính ra giá trị y, chúng sẽ được nhân thêm với giá trị của radius để tăng kích thước của đường tròn.
    Giá trị của centerX và centerY sẽ được cộng thêm cho các toạ độ x, y, vì thế tâm đường tròn bây giờ không còn ở 0,0 nữa mà sẽ ở vị trí 150,150


    tải về 0.7 Mb.

    Chia sẻ với bạn bè của bạn:
  • 1   2   3   4   5




    Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
    được sử dụng cho việc quản lý

        Quê hương