Giới thiệu dự án

Sự bùng nổ của hạ tầng mạng băng thông rộng vào cuối thập niên 2000 đã thúc đẩy mạnh mẽ quá trình chuyển dịch từ các trang web tĩnh truyền thống sang các ứng dụng Internet phong phú (Rich Internet Applications - RIA). Trước giai đoạn này, các ứng dụng nền web phụ thuộc chặt chẽ vào kiến trúc nạp lại toàn bộ trang (full-page reload), dẫn đến trải nghiệm người dùng bị ngắt quãng, tốc độ phản hồi chậm và tiêu tốn tài nguyên máy chủ. Thống kê từ tài liệu Adobe Flex 2: Training from the Source cho thấy hơn 97% trình duyệt toàn cầu thời điểm đó đã tích hợp sẵn Flash Player, tạo tiền đề vững chắc cho một cuộc cách mạng về giao diện web có tính tương tác cao như phần mềm máy tính (Desktop Application).

Đề tài khóa luận "Tìm hiểu ngôn ngữ lập trình trong Adobe Flash và xây dựng ứng dụng minh họa" (thực hiện bởi nhóm tác giả Vũ Tấn Hưng, Nguyễn Thị Minh Toàn dưới sự hướng dẫn của ThS. Lương Hán Cơ tại Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên - ĐHQG TP.HCM) tập trung giải quyết triệt để các rào cản kỹ thuật của ứng dụng web truyền thống. Trước khi công nghệ Adobe Flex ra đời, việc phát triển ứng dụng dựa trên Adobe Flash đơn thuần gặp nhiều khó khăn: thiếu công cụ lập trình chuyên nghiệp, chi phí phát triển giao diện cao do thiếu hệ thống UI components chuẩn hóa, và mã nguồn ActionScript đời đầu chưa hỗ trợ đầy đủ lập trình hướng đối tượng.

Mục tiêu cụ thể của đề tài bao gồm:

  1. Nghiên cứu toàn diện kiến trúc máy ảo ActionScript Virtual Machine 2 (AVM2) và ngôn ngữ ActionScript 3.0 với mô hình lập trình hướng đối tượng thuần túy.
  2. Làm chủ nền tảng Adobe Flex 2.0/3.0 SDK, kết hợp linh hoạt giữa ngôn ngữ khai báo giao diện MXML và mã xử lý logic ActionScript.
  3. Khai thác các kỹ thuật liên kết dữ liệu (Data Binding), quản lý trạng thái (State Management), hiệu ứng chuyển cảnh và cơ chế truyền thông dữ liệu từ xa (HTTPService, WebService, Flash Remoting qua giao thức nhị phân AMF).
  4. Thiết kế và triển khai hoàn chỉnh một ứng dụng RIA thực tế: Hệ thống Quản lý Album ảnh và Tạo Slideshow trực tuyến với các chế độ hiển thị chuyên sâu (Thumbnail, Carousel, Danh sách chi tiết).

Giải pháp ứng dụng Adobe Flex cho phép chuyển dịch phần lớn tác vụ tính toán và kết xuất đồ họa (offload computation) về phía client (Flash Player 9), giải phóng băng thông cho máy chủ và giảm độ trễ phản hồi người dùng xuống mức mili-giây. Phạm vi đề tài tập trung vào nền tảng Flash Player 9 trên nền web, biên dịch mã nguồn MXML/ActionScript thành tệp thực thi .swf, giao tiếp dữ liệu với máy chủ thông qua định dạng XML và REST/RPC.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tại thời điểm nghiên cứu, thị trường công nghệ phát triển RIA chứng kiến sự cạnh tranh giữa ba nhánh công nghệ chủ đạo: DHTML/AJAX, Microsoft Silverlight và Adobe Flex.

Tiêu chí DHTML + AJAX Microsoft Silverlight Adobe Flex (ActionScript 3.0)
Độ bao phủ Runtime 100% trình duyệt (không cần plugin) Thấp (< 30% giai đoạn 2007-2008) > 97% trình duyệt toàn cầu (Flash Player)
Tính tương thích Cross-Browser Rất kém (xung đột DOM giữa IE, Firefox, Safari) Trung bình (hạn chế trên Linux/Mac OS cũ) Tuyệt đối (Mã bytecode .swf thực thi đồng nhất)
Khả năng hiển thị đồ họa/Media Hạn chế, phụ thuộc CSS2/DOM cồng kềnh Tốt (Vector, Media, Animation) Rất mạnh (Vector engine, Scale-9 Grid, RTMP)
Mô hình lập trình JavaScript (Prototype-based, lỏng lẻo) C#, XAML, .NET Framework ActionScript 3.0 (Strict Typing, Class-based OOP), MXML
Giao thức dữ liệu Text/XML/JSON qua XMLHttpRequest SOAP, REST, WCF HTTP, WebService (SOAP), AMF (Binary Protocol)

Nghiên cứu thị trường cho thấy hàng loạt tập đoàn công nghệ lớn đã ứng dụng Flex thành công như Sony Ericsson (trang giới thiệu sản phẩm tương tác), Yahoo Messenger for Web, và các dịch vụ chia sẻ ảnh trực tuyến.

Hệ thống quản lý album ảnh được mô hình hóa theo ma trận ưu tiên MoSCoW:

  • Must Have: Xác thực người dùng (Đăng nhập/Đăng ký); Quản lý thư viện ảnh cá nhân; Phân loại Album; Các chế độ duyệt ảnh động (Thumbnail Grid, Carousel 3D, List View); Trình chiếu Slideshow tùy biến hiệu ứng.
  • Should Have: Ràng buộc dữ liệu 2 chiều tự động (Data Binding); Kỹ thuật co giãn giao diện thông minh Scale-9 Bitmap; Quản lý trạng thái giao diện động qua <mx:State>.
  • Could Have: Tích hợp phát âm thanh nền qua SoundEffect; Nhúng thư viện tài nguyên SWF dùng chung.
  • Won't Have: Xử lý biên tập ảnh thời gian thực nâng cao trên server.

Vấn đề bảo mật sandbox của Flash Player cũng được kiểm soát chặt chẽ: truy xuất tài nguyên liên domain (cross-domain) bắt buộc phải thông qua tệp cấu hình crossdomain.xml trên máy chủ:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <allow-access-from domain="*.example.com" />
</cross-domain-policy>

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng theo mô hình phân tầng chuẩn mực cho RIA:

+-------------------------------------------------------------------------+
|                       PRESENTATION TIER (CLIENT)                        |
|  Adobe Flash Player 9 (AVM2 Runtime)                                    |
|  +-------------------------------------------------------------------+  |
|  | UI Layer (MXML): Components, States, Transitions, Custom Skins    |  |
|  | Logic Layer (AS3): Event Listeners, Data Models, Remote Proxies   |  |
|  +-------------------------------------------------------------------+  |
+------------------------------------+------------------------------------+
                                     | RPC Requests (XML / AMF / SOAP)
                                     v
+-------------------------------------------------------------------------+
|                       COMMUNICATION / SERVICE TIER                      |
|  Web Server (Apache / PHP Gateway)                                      |
|  - HTTPService (REST/XML)                                               |
|  - WebService (SOAP / WSDL)                                             |
|  - Flash Remoting Gateway (AMF3 Binary Serialization)                   |
+------------------------------------+------------------------------------+
                                     | SQL Queries
                                     v
+-------------------------------------------------------------------------+
|                             DATA TIER                                   |
|  Relational Database Management System (MySQL)                          |
+-------------------------------------------------------------------------+

Technology Stack chi tiết:

  • Client Runtime: Adobe Flash Player 9 (build 9.0.124.0 trở lên).
  • Phát triển & Biên dịch: Adobe Flex SDK 2.0.1 / Flex Builder 2 (trên nền Eclipse IDE), ActionScript 3.0, MXML.
  • Dịch vụ máy chủ: Apache HTTP Server 2.2, PHP 5.2.x.
  • Cơ sở dữ liệu: MySQL 5.0 với engine InnoDB đảm bảo toàn vẹn tham chiếu.

Cơ sở dữ liệu quan hệ được thiết kế chuẩn hóa bậc 3 (3NF) gồm 4 thực thể chính:

-- Bảng lưu trữ thông tin người dùng
CREATE TABLE NGUOIDUNG (
    MaNguoiDung INT AUTO_INCREMENT PRIMARY KEY,
    TenDangNhap VARCHAR(50) NOT NULL UNIQUE,
    MatKhau VARCHAR(64) NOT NULL,
    Email VARCHAR(100) NOT NULL,
    NgayTao DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Bảng lưu thông tin siêu dữ liệu hình ảnh
CREATE TABLE HINH (
    MaHinh INT AUTO_INCREMENT PRIMARY KEY,
    MaNguoiDung INT NOT NULL,
    TenHinh VARCHAR(255) NOT NULL,
    DuongDan VARCHAR(500) NOT NULL,
    KichThuoc INT NOT NULL,
    NgayDang DATETIME DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT FK_Hinh_NguoiDung FOREIGN KEY (MaNguoiDung) 
        REFERENCES NGUOIDUNG(MaNguoiDung) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Bảng quản lý danh mục Album
CREATE TABLE ALBUM (
    MaAlbum INT AUTO_INCREMENT PRIMARY KEY,
    MaNguoiDung INT NOT NULL,
    TenAlbum VARCHAR(255) NOT NULL,
    MoTa TEXT,
    NgayTao DATETIME DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT FK_Album_NguoiDung FOREIGN KEY (MaNguoiDung) 
        REFERENCES NGUOIDUNG(MaNguoiDung) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Bảng chi tiết liên kết n-n giữa Album và Hình
CREATE TABLE CHITIETALBUM (
    MaAlbum INT NOT NULL,
    MaHinh INT NOT NULL,
    ThuTuHienThi INT DEFAULT 0,
    PRIMARY KEY (MaAlbum, MaHinh),
    CONSTRAINT FK_CT_Album FOREIGN KEY (MaAlbum) 
        REFERENCES ALBUM(MaAlbum) ON DELETE CASCADE,
    CONSTRAINT FK_CT_Hinh FOREIGN KEY (MaHinh) 
        REFERENCES HINH(MaHinh) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Methodology

Quá trình phát triển đồ án áp dụng mô hình lặp có cấu trúc (Iterative Model) kéo dài trong 16 tuần:

  • Tuần 1 - 4: Nghiên cứu cơ chế phân rã bytecode của AVM2, kiến trúc hướng đối tượng của AS3, cơ chế nhúng tài nguyên và xử lý sự kiện DOM Level 3 trong Flash.
  • Tuần 5 - 8: Thiết kế giao diện bằng MXML, xây dựng các custom components, thử nghiệm Scale-9 bitmap, định nghĩa State transitions và hiệu ứng Composite (Sequence, Parallel).
  • Tuần 9 - 12: Xây dựng tầng giao tiếp dữ liệu HTTPService, ánh xạ XML data model vào các ActionScript Value Objects, thiết kế cơ sở dữ liệu MySQL và viết backend APIs bằng PHP.
  • Tuần 13 - 16: Tích hợp module quản lý Album, kiểm thử hiệu năng hiển thị Carousel 3D, đo lường mức độ chiếm dụng bộ nhớ RAM của Flash Player và viết tài liệu nghiệm thu.

Các rủi ro kỹ thuật chính như rò rỉ bộ nhớ do sự kiện lắng nghe không giải phóng (Event Listener Memory Leaks) được kiểm soát bằng cách sử dụng cờ useWeakReference khi đăng ký sự kiện:

addEventListener(MouseEvent.CLICK, onClickHandler, false, 0, true);

Implementation và kết quả

Development process

Quá trình lập trình tập trung vào việc áp dụng các mẫu thiết kế hướng đối tượng chặt chẽ trong ActionScript 3.0 kết hợp với cú pháp khai báo MXML tinh gọn.

1. Mô hình dữ liệu và Data Binding nâng cao

Khác với việc gán dữ liệu thủ công, Flex cung cấp cơ chế kết buộc dữ liệu (Data Binding) tự động cập nhật UI khi thuộc tính thay đổi thông qua metadata tag [Bindable].

package com.data {
    [Bindable]
    public class User {
        private var _nameFirst:String;
        private var _nameLast:String;
        private var _email:String;
        private var _lastLogin:Date;

        public function User() {}

        public function get nameFirst():String { return _nameFirst; }
        public function set nameFirst(value:String):void { _nameFirst = value; }

        public function get email():String { return _email; }
        public function set email(value:String):void { _email = value; }
    }
}

Bên cạnh cú pháp {model.property} trong MXML, liên kết động trong ActionScript thuần được thực hiện thông qua lớp mx.binding.utils.BindingUtils kết hợp ChangeWatcher:

import mx.binding.utils.BindingUtils;
import mx.binding.utils.ChangeWatcher;

// Khởi tạo liên kết runtime giữa TextInput và Model
var watcher:ChangeWatcher = BindingUtils.bindProperty(
    userModel, "nameFirst", 
    txtFirstName, "text"
);

// Gỡ bỏ liên kết khi component bị hủy để giải phóng bộ nhớ
// watcher.unwatch();

2. Kỹ thuật Scale-9 Grid Scaling cho đồ họa tương tác

Để tránh hiện tượng biến dạng 4 góc bo của các thành phần đồ họa khi co giãn kích thước động, kỹ thuật Scale-9 được tích hợp trực tiếp qua chỉ thị @Embed:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <!-- Co giãn hình ảnh mà vẫn bảo toàn độ nét của 4 góc viền -->
    <mx:Image width="250" height="120" 
        source="@Embed(
            source='assets/frame_border.png',
            scaleGridTop='15', 
            scaleGridBottom='85', 
            scaleGridLeft='15', 
            scaleGridRight='85'
        )" />
</mx:Application>

3. Quản lý trạng thái màn hình (State Management)

Hệ thống cho phép chuyển đổi tức thì giữa các màn hình xem ảnh mà không cần tải lại trang bằng cách sử dụng <mx:State>:

<mx:states>
    <mx:State name="CarouselView">
        <mx:RemoveChild target="{thumbnailTileList}" />
        <mx:AddChild relativeTo="{viewContainer}" position="firstChild">
            <mx:HBox id="carouselBox" horizontalAlign="center" width="100%">
                <mx:Image id="activeImage" source="{currentPhoto.url}" />
            </mx:HBox>
        </mx:AddChild>
        <mx:SetProperty target="{btnSwitchView}" name="label" value="Chuyển sang dạng lưới" />
        <mx:SetStyle target="{viewContainer}" name="backgroundColor" value="0x1A1A1A" />
    </mx:State>
</mx:states>

4. Kỹ thuật hiệu ứng chuyển cảnh ghép (Composite Effects)

Trình chiếu Slideshow sử dụng kết hợp chuỗi hiệu ứng nối tiếp (Sequence) và song song (Parallel):

<mx:Sequence id="slideShowTransition">
    <mx:Parallel duration="600">
        <mx:Fade alphaFrom="1.0" alphaTo="0.0" target="{currentDisplayImage}" />
        <mx:Zoom zoomWidthFrom="1.0" zoomWidthTo="0.8" 
                zoomHeightFrom="1.0" zoomHeightTo="0.8" target="{currentDisplayImage}" />
    </mx:Parallel>
    <mx:Pause duration="200" />
    <mx:Parallel duration="800">
        <mx:Fade alphaFrom="0.0" alphaTo="1.0" target="{nextDisplayImage}" />
        <mx:Move xFrom="-300" xTo="0" target="{nextDisplayImage}" />
    </mx:Parallel>
</mx:Sequence>

Testing và validation

Hệ thống được kiểm thử toàn diện trên nhiều môi trường trình duyệt:

  • Kiểm thử chức năng: 45/45 ca kiểm thử đạt kết quả kỳ vọng (Bao gồm đăng nhập, kiểm tra tính hợp lệ của dữ liệu với validator, tải ảnh lên thông qua FileReference, đồng bộ hóa dữ liệu danh mục).
  • Benchmark truyền tải dữ liệu: Đánh giá khối lượng gói tin truyền tải giữa AMF3 và SOAP XML trên tập mẫu 500 bản ghi hình ảnh:
Giao thức giao tiếp Kích thước Payload trung bình Thời gian phân tích (Parse Time) Băng thông tiết kiệm
SOAP XML 148.5 KB 62 ms Gốc (0%)
Standard REST/XML 86.2 KB 38 ms 41.9%
Flash Remoting AMF3 29.4 KB 8 ms 80.2%
  • Hiệu năng hiển thị UI: Duy trì ổn định ở mức 55 - 60 khung hình/giây (FPS) khi duyệt hiệu ứng Carousel 3D; mức chiếm dụng bộ nhớ RAM của Flash Player client dao động ổn định trong khoảng 32MB - 48MB.

Kết quả đạt được

Hệ thống hoàn thành 100% các yêu cầu kỹ thuật và nghiệp vụ:

  1. Màn hình quản lý album hiển thị trực quan, hỗ trợ kéo thả và đổi tên trực tiếp.
  2. Trình diễn đa dạng với 3 chế độ: Thumbnail Grid (xem tổng quan nhanh), Carousel 3D (trải nghiệm thị giác cao cấp), List View (quản lý thông số EXIF, kích thước tệp).
  3. Trình chiếu Slideshow trực tuyến mượt mà với nhiều bộ hiệu ứng chuyển tiếp có thể cấu hình thời gian hiển thị linh hoạt.

Đổi mới và đóng góp

  1. Chuẩn hóa kiến trúc RIA trên nền tảng Flash Player: Khóa luận chứng minh việc chuyển đổi từ tư duy làm hoạt họa Flash truyền thống (Animation Timeline) sang tư duy phát triển phần mềm chuẩn mực (Software Engineering) với kiến trúc hướng đối tượng chặt chẽ trên ActionScript 3.0 và AVM2.
  2. Khai thác tối đa hiệu quả truyền thông nhị phân: Ứng dụng giải pháp giao tiếp AMF và tối ưu hóa xử lý phân tích E4X (ECMAScript for XML), giúp tăng tốc độ đọc dữ liệu lên gấp 4 lần so với các giải pháp DOM Parser trên trình duyệt cùng thời.
  3. Cơ chế tái sử dụng tài nguyên giao diện: Ứng dụng thư viện SWF Assets dùng chung kết hợp định nghĩa lớp hằng số tĩnh (public static const LOGO:Class) giúp giảm dung lượng tệp thực thi cuối cùng của ứng dụng xuống dưới 450 KB, tối ưu hóa thời gian tải ban đầu.

Ứng dụng thực tế và triển khai

Khả năng ứng dụng thực tế

Giải pháp có thể ứng dụng trực tiếp vào các hệ thống thực tiễn:

  • Cổng thông tin giới thiệu bộ sưu tập sản phẩm cao cấp cho các doanh nghiệp thương mại điện tử.
  • Hệ thống quản lý tài sản truyền thông số (Digital Asset Management - DAM) tại các tòa soạn, studio ảnh.
  • Nền tảng chia sẻ và lưu trữ đa phương tiện tương tác trực tuyến cho các tổ chức giáo dục.

Hướng dẫn triển khai (Deployment Guide)

  1. Yêu cầu máy chủ: Web Server hỗ trợ PHP 5.x, MySQL 5.x, cho phép cấu hình MIME Type cho tệp SWF (application/x-shockwave-flash).
  2. Biên dịch mã nguồn client:
    # Sử dụng trình biên dịch dòng lệnh mxmlc của Flex 2 SDK
    mxmlc src/MainApp.mxml -output deploy/MainApp.swf -compiler.include-libraries libs/
    
  3. Cấu hình Web Server: Nhúng tệp .swf vào trang HTML thông qua thẻ <object> / <embed> hoặc thư viện chuẩn swfobject.js để tự động phát hiện phiên bản Flash Player của người dùng.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Phụ thuộc vào plugin Flash Player cài đặt trên trình duyệt của máy khách hàng.
  • Khả năng lập chỉ mục nội dung cho công cụ tìm kiếm (Search Engine Indexing - SEO) đối với các tệp nhị phân .swf còn gặp nhiều rào cản kỹ thuật.
  • Chưa hỗ trợ tối ưu trên các thiết bị di động có cấu hình phần cứng hạn chế thời điểm 2008.

Hướng phát triển

  • Mở rộng ứng dụng sang nền tảng máy tính độc lập (Desktop Application) thông qua công nghệ Adobe AIR (Adobe Integrated Runtime).
  • Tích hợp máy chủ đa phương tiện Flash Media Server (FMS) để phát video và âm thanh trực tuyến độ nét cao qua giao thức RTMP streaming.
  • Tự động đồng bộ hóa hình ảnh lên các kho lưu trữ đám mây thông qua WebService APIs.

Đối tượng hưởng lợi

  • Sinh viên & Học viên CNTT: Nắm vững tài liệu tham khảo có tính hệ thống về mô hình hướng đối tượng của ActionScript 3.0, kiến trúc máy ảo AVM2 và các mẫu thiết kế giao diện RIA.
  • Lập trình viên Web: Tiếp cận phương pháp tối ưu hóa dữ liệu nhị phân AMF, kỹ thuật thiết kế giao diện động và quản lý trạng thái có thể tái sử dụng.
  • Doanh nghiệp vừa và nhỏ: Sở hữu giải pháp quản lý thư viện hình ảnh trực tuyến chuyên nghiệp với chi phí đầu tư hạ tầng thấp và khả năng vận hành mượt mà trên đa nền tảng trình duyệt.

Câu hỏi thường gặp

1. Yêu cầu cấu hình tối thiểu phía client để thực thi ứng dụng Flex 2 là gì?

Máy khách chỉ cần cài đặt trình duyệt web (Internet Explorer 6+, Firefox 2+, Safari 3+) có tích hợp tiện ích Adobe Flash Player 9 (build 9.0.124.0 trở lên), RAM tối thiểu 256MB và vi xử lý xung nhịp từ 800MHz trở lên.

2. Sự khác biệt cốt lõi giữa ActionScript 2.0 và ActionScript 3.0 là gì?

ActionScript 3.0 được thiết kế lại hoàn toàn trên máy ảo mới AVM2, hỗ trợ hệ thống kiểu dữ liệu tĩnh nghiêm ngặt (Strict Static Typing), kế thừa hướng đối tượng theo chuẩn ECMAScript (Class-based OOP), cơ chế bắt lỗi ngoại lệ tại thời điểm chạy (Runtime Exceptions), mang lại tốc độ thực thi nhanh hơn gấp 10 lần so với ActionScript 2.0 trên máy ảo AVM1.

3. Làm thế nào để giải quyết lỗi xung đột bảo mật khi truy xuất dữ liệu từ domain khác?

Máy chủ cung cấp dữ liệu bắt buộc phải đặt một tệp tin chính sách XML có tên crossdomain.xml tại thư mục gốc của domain (root domain) với thẻ <allow-access-from domain="*" /> để cấp quyền truy xuất cho Flash Player.

4. Tại sao giao tiếp qua Flash Remoting (AMF) lại tối ưu hơn WebService (SOAP)?

AMF (Action Message Format) là giao thức tuần tự hóa nhị phân độc quyền của Adobe. Dữ liệu được mã hóa thành các byte nhị phân thay vì dạng văn bản XML dài dòng của SOAP, giúp giảm tới 70-80% kích thước gói tin và loại bỏ thời gian phân tích cú pháp chuỗi phức tạp tại client.

5. Kỹ thuật Scale-9 Grid hoạt động như thế nào trong thiết kế UI?

Scale-9 chia đồ họa dạng lưới 3x3 thành 9 vùng: 4 vùng góc giữ nguyên kích thước tuyệt đối không bị kéo giãn, 4 cạnh bên chỉ co giãn theo 1 chiều (ngang hoặc dọc), và vùng trung tâm co giãn tự do theo cả 2 chiều, đảm bảo các chi tiết viền bo luôn sắc nét ở mọi kích cỡ hiển thị.


Kết luận

Khóa luận "Tìm hiểu ngôn ngữ lập trình trong Adobe Flash và xây dựng ứng dụng minh họa" của nhóm tác giả Vũ Tấn Hưng và Nguyễn Thị Minh Toàn đã nghiên cứu chuyên sâu và hệ thống hóa thành công nền tảng công nghệ Adobe Flex và ngôn ngữ ActionScript 3.0. Bằng việc làm chủ các kỹ thuật cốt lõi từ kiến trúc máy ảo AVM2, cơ chế Data Binding, Scale-9 Grid, State Management cho đến truyền thông dữ liệu tối ưu qua AMF/HTTPService, đề tài đã xây dựng hoàn chỉnh ứng dụng Quản lý Album và Trình chiếu Slideshow trực tuyến đạt chất lượng cao về mặt thẩm mỹ lẫn hiệu năng vận hành. Đây là minh chứng rõ nét cho năng lực ứng dụng công nghệ phần mềm tiên tiến vào việc giải quyết bài toán trải nghiệm người dùng trên nền tảng Web tương tác phong phú.