Thanh Dương xin chào

19 khách và 0 thành viên

Ảnh ngẫu nhiên

BannerHongAnh.swf 270.jpg Mungxuan.swf Happy_new_year.swf _NGUOI_THAY__NHAT_HUY.swf 01_TIENG_HAT_TU_TP_HO_CHI_MINH.swf Cover201115.jpg Donghosocogiay2chuden.swf Donghosocogiay2chutrang.swf Donghosocogiay12chutrang.swf Donghoso12.swf Donghoso21.swf Donghoso2.swf Donghoso1.swf Donghosocogiay1.swf Donghosocogiay.swf Donghoso.swf Clock_LienBich.swf Ad_cadao.swf Videoplayback_.flv

Tài nguyên dạy học

Điều tra ý kiến

Bạn thấy trang này như thế nào?
Đẹp
Đơn điệu
Bình thường
Ý kiến khác

Sắp xếp dữ liệu

Nhúng mã HTML

Thống kê

  • truy cập   (chi tiết)
    trong hôm nay
  • lượt xem
    trong hôm nay
  • thành viên
  • thống kê truy cập

    free counters
    Gốc > Lập trình Flash >

    Bài 50: LỚP VÀ ĐỐI TƯỢNG

    Trong bài này, ta tiếp tục xem xét những khái niệm cơ bản, tạo nền tảng cần thiết cho việc xây dựng những chương trình phức tạp hơn. Trước hết, bạn cần nắm vững hai khái niệm quan trọng của ngôn ngữ ActionScript trong Flash:lớp (class) và đối tượng (object).

    Bạn đã từng tạo ra một dãy với câu lệnh như sau:

    a = new Array();

    Câu lệnh như vậy tạo nên biến a trỏ đến một đối tượng thuộc lớp Array. Người ta cũng nói rằng đối tượng ấy thuộcloại Array hoặc thuộc kiểu Array. Có khi người ta gọi đối tượng là thể hiện (instance) của lớp. "Thể hiện" hay "đối tượng" chỉ là hai cách gọi khác nhau của cùng một khái niệm.

    Trong Flash, ta đã từng dùng thuật ngữ lớp (layer). Tuy cách gọi trùng nhau nhưng layer chỉ sự phân tầng trong khiclass chỉ sự phân loại. Khi gọi "lớp", tùy theo ngữ cảnh, bạn cần hiểu đó là layer hoặc class. Ta dùng thuật ngữ "lớp" duy nhất để diễn đạt hai khái niệm khác nhau.

    Trong câu lệnh tạo dãy nêu trên, tác tử new gọi hàm Array(). Hàm Array() gọi là hàm dựng (constructor) của lớp Array. Nhiệm vụ của hàm dựng Array() là tạo nên đối tượng thuộc lớp Array.

    Khi bạn viết

    n = 100;

    biến n không phải là biến trỏ đến đối tượng. Đó là biến chứa trị số thuộc kiểu number (kiểu số).

    Bạn hãy mở tập tin FLAmới (ActionScript 2), mở bảng Actions - Frame ứng với khung 1, gõ đoạn mã ngắn như sau:

    n = 100;
    trace("n: " + typeof(n));

    Hàm typeof cho bạn biết kiểu của đối mục. Nghĩa là khi trao biến n cho hàm typeof, bạn sẽ biết kiểu của biến n. Thử chạy chương trình, bạn thu được kết quả ở bảng Output:

    n: number

    Kết quả như vậy cho thấy rõ trị số của n thuộc kiểu number. Khi muốn nhấn mạnh kiểu number không phải là lớp, ta gọi đó là kiểu cơ bản (primitive type).

    Bạn thử sửa lại chương trình hiện có như sau:

    //n = 100;
    n = new Number(100);
    trace("n: " + typeof(n));

    Nghĩa là thay vì tạo biến n chứa trị số thuộc kiểu cơ bản number, ta tạo ra biến n trỏ đến đối tượng thuộc lớp Number. Trao trị số 100 cho hàm dựng Number(), bạn có được đối tượng thuộc lớp Number chứa trị số 100. Chạy thử chương trình, bạn thu được kết quả:

    n : object

    Kết quả cho thấy rõ n trỏ đến một đối tượng. Để cho gọn, thay vì nói "đối tượng thuộc lớp Number", bạn có thể nói "đối tượng Number".

    Chắc bạn đang thắc mắc: "Tạo ra đối tượng thuộc lớp Number để làm gì?". Lớp luôn có nhiều hàm (function). Khi tạo ra đối tượng thuộc một lớp nào đó, bạn có thể gọi hàm nào đó của lớp thông qua đối tượng đang xét. Bạn hãy sửa chương trình hiện có như sau:

    //n = 100;
    n = new Number(100);
    //trace("n: " + typeof(n));
    trace("n = 0x" + n.toString(16));

    Trong câu lệnh vừa thêm, ta gọi hàm toString của lớp Number thông qua một đối tượng Number. Hàm toString trả về một chuỗi nhằm diễn đạt trị số được chứa trong đối tượng Number. Ta trao số 16 cho hàm toString nhằm tỏ ý muốn trị số trong đối tượng Number được diễn đạt ở dạng thập lục phân (hexadecimal).

    Chạy thử chương trình, bạn có kết quả:

    n = 0x64

    Trị số 64 thu được là trị số trong hệ thập lục phân, bằng 100 trong hệ thập phân (6 x 16 + 4 = 100). Trước trị số 64, ta thêm hai ký tự 0x để chỉ rõ 64 là trị số thập lục phân, chứ không phải trị số thập phân. Đây là quy ước phổ biến khi diễn đạt trị số thập lục phân. Sau này, bạn sẽ có nhiều dịp để làm việc với trị số thập lục phân, chẳng hạn khi cần diễn đạt một màu sắc nào đó.

    Để gọi hàm của một lớp, có khi bạn không cần tạo ra đối tượng thuộc lớp ấy. Bạn hãy viết thêm vào chương trình hiện có như sau:

    //n = 100;

    n = new Number(100);

    //trace("n: " + typeof(n));

    trace("n = 0x" + n.toString(16));

    trace("Căn bậc hai của n = " + Math.sqrt(n));

    Thử chạy chương trình, bạn có kết quả:

    n = 0x64
    Căn bậc hai của n = 10

    Trong câu lệnh vừa thêm vào, ta gọi hàm sqrt (square root) của lớp Math để tính căn bậc hai của n. Vì n là đối tượng Number chứa trị số 100, căn bậc hai của n là 10.

    Như bạn thấy, để gọi hàm sqrt của lớp Math, ta chỉ cần viết tên hàm sau tên lớp, phân cách bởi dấu chấm, không cần tạo ra đối tượng thuộc lớp Math. Hàm như vậy gọi là hàm lớp (class function) hoặc hàm tĩnh (static function). Không chỉ riêng hàm sqrt, hầu hết các hàm của lớp Math là hàm tĩnh vì lớp Math được tạo ra nhằm cung cấp "dịch vụ tính toán" cho bạn.


    Nhắn tin cho tác giả
    Đỗ Thanh Dương @ 15:27 05/04/2012
    Số lượt xem: 518
    Số lượt thích: 0 người
     
    Gửi ý kiến

    HỖ TRỢ QUẢN TRỊ WEBSITE

    Thay tên website / Chọn thư mục / Mở ra
    Giao diện Module Thư mục Thành viên Tài nguyên Xóa Code
    http://