addChild & removeChild trong AS3

addChild và removeChild là những cách thức hiển thị đối tượng rất quan trọng trong ActionScript. Để hiển thị 1 đối tượng trong library ra màn hình chúng ta có addChild và để xóa bỏ đối tượng khỏi màn hình ta có removeChild. Lý thuyết thì đơn giản như vậy và phương pháp thực hiện cũng không có gì khó, tuy vậy addChild và removeChild lại được sử dụng rất đa dạng tùy theo yêu cầu công việc.

Trong bài này tôi giới thiệu 1 ví dụ căn bản về việc sử dụng addChild và removeChild trong AS3. Click vào hình dưới để xem kết quả của ví dụ này.

Trước hết bạn cần tạo trên màn hình 1 MovieClip rỗng tên là “loader_mc“. Đây là nơi chứa các đối tượng được load lên từ library. Trong library cần tạo sẵn 1 MovieClip có Linkage đặt là “myChild“, đây chính là MovieClip sẽ được load lên. Bên trong MovieClip này có 1 dynamic Text tên là “myChild_txt“. Trở lại màn hình chính, bạn cần tạo thêm 1 dynamic Text tên là “last_txt” để hiển thị tên của child cuối cùng trong danh sách. Và cuối cùng là cần 2 Buttons gồm “add_btn” và “remove_btn

ActionScript:

var n:Number = 0;
var myList:myChild;
add_btn.addEventListener(MouseEvent.CLICK, addlist);
remove_btn.addEventListener(MouseEvent.CLICK, remove);
function addlist(evt:MouseEvent):void
{
   n++;
   for (var i:Number=0; i<n ; i++)
   {
      myList = new myChild();
      myList.y = i * (myList.height + 5);
   }
   loader_mc.addChild(myList);
   myList.myChild_txt.text = "MovieClip " + n;
   myList.name = myList.myChild_txt.text;
   last_txt.text = myList.name;
}
function remove(evt:MouseEvent):void
{
   n--;
   if (n <= 0)
   {
      n = 0;
      last_txt.text = "";
   }
   //xóa bỏ MC cuối cùng
   loader_mc.removeChild(loader_mc.getChildAt(loader_mc.numChildren -1));
   last_txt.text = loader_mc.getChildAt(loader_mc.numChildren -1).name;
}

Bây giờ bạn sẽ có được kết quả giống với kết quả tôi đưa ra bên trên.

Nếu bạn là người phát triển Flash Air cho điện thoại Android thì ví dụ này là 1 gợi ý để các bạn giải bài toán cho button “Back”. Trên điện thoại Android thì button Back dùng để gọi lại hành động liền trước của người dùng. Với 1 ứng dụng Flash thì không có khái niệm back này do vậy button Back luôn là bài toán hóc búa đối với các Flash Developer. Tuy nhiên với addChild và removeChild thì đây là 1 giải pháp. Bạn có thể dùng remove_btn của ví dụ trên như là nút Back trên điện thoại. Nếu bạn có giải pháp nào hay hơn cho button Back trên điện thoại Android, xin hãy chia sẻ với tôi.