Hãy đăng ký thành viên để có thể dễ dàng trao đổi, giao lưu và chia sẻ về kiến thức đồ họa.
  1. Hãy đăng ký subscribe kênh Youtube mới của Việt Designer tại địa chỉ: Youtube.com/VietDesignerChannel để theo dõi các video về thiết kế đồ họa. Do trước đó kênh cũ bị Youtube quét không rõ lý do, trong thời gian chờ kháng cáo nếu các bạn thấy video trên diễn đàn bị die không xem được thì có thể vào kênh mới để tìm xem video sơ cua nhé.
    Loại bỏ thông báo

Chương trình quay số đơn giản (as3), code và có comment bằng tiếng Việt

Chủ đề thuộc danh mục 'Adobe Flash' được đăng bởi chhieu85, 12/2/15.

Lượt xem: 6,761

  1. chhieu85 Mới đăng kí

    Chào mọi người

    Mình mới tham gia diễn đàn này nên ra mắt bằng 1 chương trình quay số đơn giản coi như là phần ra mắt. Hy vọng ko múa rìu qua mắt thợ.
    Cái này không mới và cũng không có gì ghê gớm nhưng hy vọng giúp dc ai đó khi cần thiết. (Mình mới đọc dc 1 bài viết bạn nào đó gặp vấn đề về vụ này nên rãnh viết luôn):)

    Về bản thân, do 1 số lý do, mình chuyển sang code actionscript3 gần 1 năm nay.
    Mình chủ yếu code thuần về xử lý dữ liệu, mã hóa và lập trình mạng trên nền Flash/Flex/Air và dùng FlashBuiler.
    Về giao diện thì có liên quan 1 chút, chú yếu là tạo UI để xử lý video/mp3 và streamming.

    Trước đây mình code về Java,PHP và JavaScript là chủ yếu.

    Sau đây là code mình mới viết, 60p cho code và 20p cho comment, IDE là FlashBuiler 4.6.
    Có hình ảnh đính kèm
    Các bạn nên copy ra dùng notepad++ với các dark theme xem cho dễ
    Nếu có lỗi xin nhận góp ý nhiệt tình
    Link mediafire: http://www.mediafire.com/download/osq6poy4pc9nyjj/QuaySo.zip

    package
    {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.utils.Timer;

    import mx.events.ModuleEvent;

    public class QuaySo extends Sprite
    {
    // khung text chứa số lượng các con số sẽ chỉ định
    private var txtSoLuong:TextField;

    // label cho nút Tạo dãy số và khung(Sprite) cho nút tạo dãy số
    private var lblTaoDaySo:TextField;
    private var btnTaoDaySo:-sprite;

    // label và nút bắt đầu
    private var lblBatDau:TextField;
    private var btnBatDau:-sprite;
    // label và nút kết thúc
    private var lblDungLai:TextField;
    private var btnDungLai:-sprite;

    // khung chứa dãy số
    private var daySo:-sprite;

    // mảng chứa các dãy số, dùng cho điểu khiển dễ dàng hơn
    // thay vì lấy trực tiếp từ khung chứa các số
    private var arrDaySo:Array;

    // timer điều khiển quay số
    private var quaySoTimer:Timer;

    public function QuaySo()
    {
    // Khởi tạo các đối từng
    txtSoLuong = new TextField();
    txtSoLuong.border = true;
    txtSoLuong.width = 100;
    txtSoLuong.height = 25;
    txtSoLuong.x = 10;
    txtSoLuong.y = 10;
    // cho phép select các con số
    txtSoLuong.selectable = true;
    // chỗ này sẽ cho phép text field có thể nhập dc dữ liệu
    txtSoLuong.type = TextFieldType.INPUT;

    lblTaoDaySo = new TextField();
    lblTaoDaySo.text = "Tạo dãy số";
    lblTaoDaySo.border = true;
    lblTaoDaySo.width = 70;
    lblTaoDaySo.height = 25;
    // loải bỏ select text
    lblTaoDaySo.selectable = false;

    btnTaoDaySo = new Sprite();
    btnTaoDaySo.buttonMode = true;
    btnTaoDaySo.addChild(lblTaoDaySo);
    btnTaoDaySo.x = 120;
    btnTaoDaySo.y = 10;
    // tạo sự kiện click chuột và gán hàm btnTaoDaySo_MouseClick vào
    // giá trị "true" cuối hàm làđể giải quyết vấn đề của => lblTaoDaySo.selectable = false;
    // nếu không event sẽ không chạy được
    btnTaoDaySo.addEventListener(MouseEvent.CLICK, btnTaoDaySo_MouseClick, true);

    lblBatDau = new TextField();
    lblBatDau.text = "Bắt đầu";
    lblBatDau.border = true;
    lblBatDau.width = 70;
    lblBatDau.height = 25;
    lblBatDau.selectable = false;

    btnBatDau = new Sprite();
    btnBatDau.buttonMode = true;
    btnBatDau.addChild(lblBatDau);
    btnBatDau.x = 200;
    btnBatDau.y = 10;
    btnBatDau.addEventListener(MouseEvent.CLICK, btnBatDau_MouseClick, true);

    lblDungLai = new TextField();
    lblDungLai.text = "Dùng lại";
    lblDungLai.border = true;
    lblDungLai.width = 70;
    lblDungLai.height = 25;
    lblDungLai.selectable = false;

    btnDungLai = new Sprite();
    btnDungLai.buttonMode = true;
    btnDungLai.addChild(lblDungLai);
    btnDungLai.x = 280;
    btnDungLai.y = 10;
    btnDungLai.addEventListener(MouseEvent.CLICK, btnDungLai_MouseClick, true);

    // khởi tạo khung chứa dãy số
    daySo = new Sprite();
    daySo.y = 50;

    // đưa các đối tượng vào khung chính để hiển thị
    this.addChild(txtSoLuong);
    this.addChild(btnTaoDaySo);
    this.addChild(btnBatDau);
    this.addChild(btnDungLai);
    this.addChild(daySo);

    // khởi tạo timer và mỗi lần chạy là 100 milisecon, 0.1 giây
    this.quaySoTimer = new Timer(100);
    quaySoTimer.addEventListener(TimerEvent.TIMER, quaySo_TimerEvent);
    // khởi tạo mảng điều khiển dãy số
    this.arrDaySo = new Array();
    // mặc định tạo sẵn 10 con số
    this.taoDaySo(10);
    }

    // hàm khởi tạo dãy số
    private function taoDaySo(soLuong:Number):void {

    // chỗ này xóa các con số cũ và chuẩn bị tạo số mới
    while (this.daySo.numChildren > 0) {
    this.daySo.removeChildAt(0);
    }

    // vòng lặp dựa và tham số
    for (var i:Number = 0; i < soLuong; i ++) {

    var number:TextField = new TextField();
    number.text = "0";
    number.border = false;
    number.width = 25;
    number.height = 25;
    // vị trí các con số dựa vào vòng lặp để tính toán cho tiện
    number.x = (i * 10) + 10;
    number.selectable = false;
    // cho vào mảng dãy số để kiểm soát
    this.arrDaySo.push(number);
    // cho vào khung chính
    this.daySo.addChild(number);
    }
    }

    private function btnTaoDaySo_MouseClick(evt:MouseEvent):void {
    // stop timer trước
    this.quaySoTimer.stop()
    // lấy giá trị từ text số lượng
    // và convert sang con số
    var soLuong:Number = Number(txtSoLuong.text);
    this.taoDaySo(soLuong);
    }

    // hàm này mỗi lần timer chạy dc 0.1s sẽ gọi lại hàm này
    private function quaySo_TimerEvent(timerEvt:TimerEvent):void {

    for (var i:Number = 0; i < this.arrDaySo.length; i++) {
    // lấy số tại vị trí index
    var number:TextField = this.arrDaySo;
    // tạo 1 con số ngẫu nhiên
    // hàm ramdom cho phép tạo con số ngãu nhiên từ 0.0 -> 1.0
    // vì vậy nhân thêm 10 và làm tròn cho đẹp
    var random = Math.round( Math.random() * 10);

    // mình chỉ lấy từ 0 - 9 nên nó bằng 10 thì trừ đi 1
    if (random == 10) {
    random =random - 1;
    }
    // gán vào
    number.text = String(random);
    }
    }
    // hàm khai báo sự kiện cho nút bắt đầu và bắt dầu chạy timer
    private function btnBatDau_MouseClick(evt:MouseEvent):void {
    this.quaySoTimer.start();
    }

    // hàm dừng lại và dừng timer..
    private function btnDungLai_MouseClick(evt:MouseEvent):void {
    this.quaySoTimer.stop();
    }
    }
    }

    ...
    Chỉnh sửa lần cuối: 12/2/15
    Phạm Hữu Dư thích bài viết này
Từ khóa:

Ủng hộ diễn đàn