Search…

STML5 CF - STDIO HTML5 Compact Framework

24/09/20204 min read
Bài viết giới thiệu sơ lược về STML5 CF - Framework hỗ trợ phát triển các demo, ứng dụng đồ họa trên nền tảng web, hướng dẫn cách khởi tạo và cách sử dụng một số hàm trong STML5 CF.

STML5 CF là từ viết tắt của STDIO HTML5 Compact Framework, giống như cái tên của nó, STML5 CF là một framework đồ họa 2D đơn giản dựa trên nền tảng HTML5. STML5 CF gồm có 2 phần chính là Graphics và TextureCache.

Vì sao sử dụng STML5 CF?

Với STML5 CF có thể nạp ảnh và thao tác vẽ với JavaScript trên nền tảng web, thuận lợi cho việc phát triển thêm các demo, giáo trình, ứng dụng mà không cần tốn kém thời gian khởi tạo 1 framework.

Graphics

Thành phần này trong STML5 CF đóng vai trò khởi tạo Canvas (Canvas là một mặt phẳng dùng để chứa hình ảnh, các khối hình học, đường thẳng... được vẽ lên), thiết đặt các trạng thái của Canvas và những hàm tiện ích để giúp việc vẽ lên Canvas được thực hiện nhanh chóng. Dưới đây là một số phương thức tiêu biểu của Graphics.

Khởi tạo STML5 CF

canvas = document.createElement("canvas");
canvas.setAttribute("id", "stml5cf_canvas");
canvas.width = width;
canvas.height = height;
canvas.style.border = "1px solid";

context = canvas.getContext("2d");

document.body.appendChild(canvas);

Phần khởi tạo gồm có 3 phần chính:

  • Tạo HTML5 Canvas (dòng 1).
  • Khởi tạo các thuộc tính của Canvas (dòng 2-5).
  • Thêm Canvas vào Document Object (dòng 9).

Xóa nội dung Canvas

Trong STML5 CF, có thể xóa nội dung của Canvas bằng cách gọi hàm clearScreen.

function clearScreen();

Thiết đặt trạng thái cho STML5 CF

Hiện tại, STML5 CF hỗ trợ 3 hàm thiết đặt trạng thái là:

  • Thiết đặt màu vẽ hiện tại: setFillColor
  • Thiết đặt màu cho đường viền: setStrokeColor
  • Thiết đặt độ dày của đoạn thẳng: setLineWidth

Nguyên mẫu hàm của các hàm trên có dạng như sau:

function setFillColor(color);
function setStrokeColor(color);
function setLineWidth(width);

Với color là màu được quy định bởi tên tiếng anh như "red", "green", "blue" hoặc theo mã màu RGB như "#ff00ff", "00ff00".

Các hàm vẽ trong STML5 CF

STML5 CF hỗ trợ các hàm vẽ khối hình học như hình chữ nhật, hình tròn, đoạn thẳng và các hàm vẽ text, hình ảnh.

  • Vẽ hình chữ nhật: function drawRect(x, y, width, height);
  • Vẽ hình tròn: function drawCircle(x, y, radius);
  • Vẽ đoạn thẳng: function drawLine(xFrom, yFrom, xTo, yTo);
  • Vẽ text: function drawText(font, size, text, x, y);
  • Vẽ hình ảnh: function drawImage(image, x, y);

Trong hàm vẽ hình ảnh, tham số image sẽ là giá trị trả về khi gọi hàm getImage từ thành phần TextureCache.

TextureCache

Thành phần này trong STML5 CF dùng để hỗ trợ cho Graphics khi vẽ hình ảnh. TextureCache giúp tiết kiệm được thời gian, bộ nhớ khi phải load một ảnh nhiều lần. TextureCache có 3 phương thức (hàm) chính:

  • addImage: Thêm hình ảnh muốn load và TextureCache.
  • startLoading: TextureCache load hình ảnh khi phương thức này được gọi. Phương thức này nhận tham số là 1 hàm, hàm này được gọi khi tất cả các hình ảnh được load xong.
  • getImage: lấy hình ảnh sau khi load để vẽ lên Canvas.

Lưu ý: nên gọi hàm addImage trước khi gọi startLoading và gọi getImage sau khi gọi startLoading.

Ví dụ minh họa

Dưới đây là ví dụ minh họa cách sử dụng STML5 CF.

Trước tiên, cần một hàm để kích hoạt STML5 CF sau khi trang web được load xong.

<body onload=openWorld()>

Sau khi load xong, trang web sẽ thực thi hàm openWorld.

Khởi tạo STML5 CF chỉ gói gọn trong 1 hàm duy nhất

initSTML5CF(800, 480);

Dưới đây là ví dụ vẽ logo của STDIO lên Canvas, sử dụng TextureCache để load logo.

textureCache = new TextureCache();

for(var i = 0; i < APP_IMAGES.length; i++) {
    textureCache.addImage(APP_IMAGES[i]);
}

textureCache.startLoading(function() {
    drawWorld();
});

 Sau khi toàn bộ hình ảnh (texture) được load xong, bắt đầu thực hiện vẽ lên Canvas.

setFillColor("#ff0000");
drawRect(10, screenHeight/2, 100, 100);

setFillColor("#00ff00");
drawRect(130, screenHeight/2, 100, 100);

setFillColor("#0000ff");
drawCircle(300, screenHeight/2 + 50, 50);

drawLine(370, screenHeight/2 + 100, 470, screenHeight/2 + 100);

setFillColor("#ffbb33");
drawText("Helvetica", 50, "STDIO HTML5 Compact Framework", screenWidth/2, screenHeight*8/9);

var stdioImage = textureCache.getImage(s_stdioLogo);
drawImage(stdioImage, 10, 10);

Kết quả cuối cùng sẽ như sau:

ss_1

Mã nguồn

Tải toàn bộ mã nguồn và ví dụ minh họa của STML5 CF tại đây.

Bài chung series

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024