<%

Create your own social network with a free forum.
InvisionFree - Free Forum Hosting
Welcome to Kimbinhmai. We hope you enjoy your visit.


You're currently viewing our forum as a guest. This means you are limited to certain areas of the board and there are some features you can't use. If you join our community, you'll be able to access member-only sections, and use many member-only features such as customizing your profile, sending personal messages, and voting in polls. Registration is simple, fast, and completely free.


Join our community!


If you're already a member please log in to your account to access all of our features:

Name:   Password:

%>
Create your own social network with a free forum.
InvisionFree - Free Forum Hosting
Welcome to Kimbinhmai. We hope you enjoy your visit.


You're currently viewing our forum as a guest. This means you are limited to certain areas of the board and there are some features you can't use. If you join our community, you'll be able to access member-only sections, and use many member-only features such as customizing your profile, sending personal messages, and voting in polls. Registration is simple, fast, and completely free.


Join our community!


If you're already a member please log in to your account to access all of our features:

Name:   Password:

Tra Từ iển

 

 Dnh cho U16: Lm quen với C# v .NET, Lập trnh DirectSound: chơi một tập tin
namki_nam
  Posted: Feb 19 2005, 09:30 AM


Administrator


Group: Admin
Posts: 253
Member No.: 1
Joined: 10-February 05



- Anh Si Sp ơi, lần trước khi ci đặt DirectX SDK, anh cho rằng “mới chỉ l khc dạo đầu của hnh trnh gian khổ”, lm em "nổi da g" hết trơn n!

- Thường th bao giờ ta cũng thấy e ngại với lĩnh vực m mnh cn lạ lẫm. Nhưng “học tri l, bất học bất tri l”, c học, c thử lm th mới biết em ạ. Em nn lướt trn Internet để tm kiếm thm thng tin về lập trnh trong lĩnh vực DirectX. Từ kha để tm kiếm trn mạng l DirectSound, C# hoặc Programming chẳng hạn...

- Nhưng trước hết anh by cho em lm một chương trnh nho nhỏ để em biết bắt đầu từ đu, nghe anh?

- Mnh hy bắt đầu bằng việc lập trnh DirectSound để chơi một tập tin m thanh dạng WAV. Việc lập trnh DirectSound c thể được gi gọn trong 4 bước cơ bản như sau:

1. Tạo đối tượng thiết bị SoundDevice.

2. Tạo đối tượng vng đệm SoundBuffer (cụ thể l dng đối tượng thuộc lớp SecondaryBuffer).

3. Nạp tập tin m thanh WAV vo vng đệm SoundBuffer.

4. Cho m thanh pht ra từ dữ liệu ở vng đệm ấy.

Mnh thử nh. Em hy tạo một dự n thuộc loại Windows Form. Trong cửa sổ Solution Explorer, em bấm-phải vo mục Reference v chọn Add Reference. Trong thẻ .NET của cửa sổ Add Reference, em giữ phm Ctrl, bấm lần lượt vo Microsoft.DirectX v Microsoft.DirectX.DirectSound để chọn hai thnh phần đ (hnh 1) rồi bấm nt OK.

Để dng hai thnh phần vừa chọn, em mở tập tin nguồn Form1.cs, thm hai cu lệnh ở đầu tập tin như vầy:

using Microsoft.DirectX;

using Microsoft.DirectX.DirectSound;

Mnh nn tạo SoundDevice v SoundBuffer ngay khi khởi động chương trnh tức l trong hm đp ứng tnh huống Form1_Load. Sau khi tạo SoundBuffer, em c thể nạp lun dữ liệu m thanh từ tập tin WAV no đ, chẳng hạn như tập tin Windows XP Startup.wav trong Windows XP hay The Microsoft Sound.wav trong cc hệ điều hnh Windows cũ hơn (đoạn m 1).

Đoạn m 1
private void MainForm_Load(object sender,
System.EventArgs e)
{
// Tạo thiết bị
SoundDevice = new Device();
// Xc lập mức độ cộng tc của thiết bị với cc ứng dụng khc cũng đang sử dụng thiết bị
SoundDevice.SetCooperativeLevel(this,
CooperativeLevel.Priority);
try
{
// Tạo vng đệm cho thiết bị v nạp tập tin WAV
SoundBuffer =
new SecondaryBuffer(
"C:\\Windows\\Media\\Windows XP Startup.wav",
SoundDevice);
}
catch(SoundException sndex)
{
// Bo lỗi nếu khng tạo được
MessageBox.Show(sndex.Message);
}
}

Mnh c thể thiết kế biểu mẫu đơn giản thi: đặt một nt lệnh c thuộc tnh Name l btnPlay v c thuộc tnh Text l &Play. Khi người dng bấm vo nt ny th chương trnh bắt đầu pht m thanh ra loa. Cũng như mọi khi, mnh cần c thm một nt lệnh btnKetthuc, với thuộc tnh Text l &Ket thuc, để đng cửa sổ v kết thc chương trnh.

Để viết hm đp ứng tnh huống Click cho nt Play, em chọn nt Play, chọn thẻ event (biểu tượng tia st) trong cửa sổ Properties, bấm kp vo tnh huống Click. Hm đp ứng tnh huống btnPlay_Click lập tức xuất hiện trong cửa sổ m. Em viết hm đ như vầy n (đoạn m 2). Tương tự, em viết hm đp ứng tnh huống Click của nt lệnh Ket thuc để kết thc chương trnh. Khng c chi nhiều, mnh chỉ cần gọi hm Close() l xong (đoạn m 2). Khi kết thc chương trnh, em nhớ giải tỏa vng đệm SoundBuffer v thiết bị SoundDevice. Mnh thực hiện việc ny thng qua hm Dispose() (đoạn m 3). Coi như xong rồi đ, by giờ em cho bin dịch v chạy thử xem sao.

Đoạn m 2
private void btnPlay_Click(object sender,
System.EventArgs e)
{
if (SoundBuffer != null)
{
// Bắt đầu chơi tập tin m thanh đ nạp trong vng đệm
SoundBuffer.Play(0, BufferPlayFlags.Default);
}
}

...
private void btnKetthuc_Click(object sender,
System.EventArgs e)
{
Close();
}

Đoạn m 3
protected override void
Dispose(bool disposing)
{
if (SoundBuffer != null)
SoundBuffer.Stop();
if (SoundDevice != null)
SoundDevice.Dispose();
if(disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}

Top
DealsFor.me - The best sales, coupons, and discounts for you

Topic Options


<% SATSR %>
Hosted for free by InvisionFree* (Terms of Use: Updated 2/10/2010) | Powered by Invision Power Board v1.3 Final © 2003 IPS, Inc.
Page creation time: 0.0538 seconds | Archive