• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Kỹ thuật hoạt hình với Microsoft Agent Control 2.0

Các bài viết hướng dẫn về Visual Basic .NET và C#

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
nimgiaminh
Thành viên danh dự
Thành viên danh dự
Bài viết: 432
Ngày tham gia: T.Bảy 07/08/2010 9:24 am
Đến từ: Ở dưới đó đó
Has thanked: 6 time
Been thanked: 18 time
Liên hệ:

Kỹ thuật hoạt hình với Microsoft Agent Control 2.0

Gửi bàigửi bởi nimgiaminh » T.Năm 10/02/2011 8:47 am

Thủ thuật: Kỹ thuật hoạt hình với Microsoft Agent Control2.0
Tác giả: Sưu tầm
Mô tả: Xây dựng 1 hình ảnh hoạt hình có sẵn trong Control của VS, đây chỉ là 1 bài viết cơ bản mà mình mới tìm ra được để chia sẽ. Nhớ ủng hộ mình nha.



1. Bước đầu tiên cần có control "Microsoft Agent Control 2.0". Control này có sẵn trong công cụ của VS, các bạn add nó vào.

Windows XP Professional-2011-02-10-08-06-07.png
Add vào toolbox


2. Kéo control "Microsoft Agent Control 2.0" vào trong Form, đặt bất cứ chỗ nào cũng được, đặt tên là "mainAgent"

3. Tạo form như hình vẽ, với các số liệu như sau:
Windows XP Professional-2011-02-10-08-08-09.png
Form như hình vẽ

textbox1 : Name "txtLocation".
ComboBox1 : Name "characterCombo".
ComboBox2 : Name "actionsCombo".
textbox2 : Name "txtSpeech", Multiline "True".
Button : Name "cmdSpeak".

4. Imports các thư viện cần thiết :
  1. Imports System.IO
  2. Imports System.Threading
  3. Imports System.Collections
  4.  


5. Khai báo biến :
  1. Private mSpeaker As AgentObjects.IAgentCtlCharacter


6. Tạo 2 sub sau :

  1. Private Sub ChangeCharacter(ByVal name As String)
  2.         mSpeaker.Hide(0)
  3.         mSpeaker = mainAgent.Characters(name)
  4.         GetAnimationNames()
  5.         ' Sinh lại danh sách hành động.
  6.         mSpeaker.Show(0)
  7.     End Sub


  1.   Private Sub GetAnimationNames()
  2.         ' Bảo đảm tính an toàn về tiểu trình.
  3.         Dim synclockObject As Object = (Me)
  4.         Monitor.Enter(synclockObject)
  5.         Try
  6.             ' Lấy tên các hành động.
  7.             Dim enumerator As IEnumerator = mainAgent.Characters.Character(mSpeaker.Name).AnimationNames.GetEnumerator()
  8.             Dim voiceString As String
  9.  
  10.             ' Xóa actionsCombo.
  11.             actionsCombo.Items.Clear()
  12.             mSpeaker.Commands.RemoveAll()
  13.  
  14.             ' Thêm tất cả các hành động (cho phép ra lệnh bằng giọng nói).
  15.             While enumerator.MoveNext()
  16.                 voiceString = Convert.ToString(enumerator.Current)
  17.                 voiceString = voiceString.Replace("_", "underscore")
  18.                 actionsCombo.Items.Add(enumerator.Current)
  19.  
  20.                 mSpeaker.Commands.Add(Convert.ToString(enumerator.Current), "", voiceString, True, False)
  21.             End While
  22.  
  23.             ' Thêm lệnh tùy biến.
  24.             mSpeaker.Commands.Add("MoveToMouse", "MoveToMouse", "Move To Mouse", True, True)
  25.         Finally
  26.             Monitor.[Exit](synclockObject)
  27.         End Try
  28.     End Sub


7. Tại sự kiện Keydown của txtLocation
  1. If True Then
  2.             If e.KeyCode = Keys.Enter Then
  3.                 ' Thiết lập nơi lưu trữ nhân vật vào txtLocation.
  4.                 Dim location As String = txtLocation.Text
  5.  
  6.                 ' Khởi tạo các nhân vật.
  7.                 Try
  8.                     ' Nạp các nhân vật vào đối tượng agent.
  9.                     mainAgent.Characters.Load("Merlin", location & "merlin.acs")
  10.                     'Nếu muốn thêm các đối tuợng khác thì thực hiện tương tự
  11.  
  12.                     ' Vô hiệu txtLocation và kích hoạt các điều kiểm khác.
  13.                     txtLocation.Enabled = False
  14.                     txtSpeech.Enabled = True
  15.                     cmdSpeak.Enabled = True
  16.                     characterCombo.Enabled = True
  17.                     actionsCombo.Enabled = True
  18.  
  19.                     ' Thiết lập nhân vật hiện tại là Merlin và hiện nhân vật này.
  20.                     mSpeaker = mainAgent.Characters("Merlin")
  21.                     GetAnimationNames()
  22.                     ' Thu lấy danh sách hành động.
  23.                     mSpeaker.Show(0)
  24.                 Catch generatedExceptionName As FileNotFoundException
  25.                     MessageBox.Show("Invalid character location", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
  26.                 End Try
  27.             End If
  28.         End If


Tại sự kiện Click của cmdSpeak :
  1. ' Nếu txtSpeech rỗng, nhân vật nhắc người dùng nhập text vào txtSpeech.
  2.         If txtSpeech.Text = "" Then
  3.             mSpeaker.Speak("Please type the words you want me to speak", "")
  4.         Else
  5.             mSpeaker.Speak(txtSpeech.Text, "")
  6.         End If


Tại sự kiện ClickEvent của mainAgent

  1.          mSpeaker.Play("Confused")
  2.         mSpeaker.Speak("Why are you poking me?", "")
  3.         mSpeaker.Play("RestPose")


Tại sự kiện SelectedIndexChanged của characterCombo

  1. ChangeCharacter(characterCombo.Text)


Tại sự kiện SelectedIndexChanged của actionsCombo
  1.   mSpeaker.[Stop](Nothing)
  2.         mSpeaker.Play(actionsCombo.Text)
  3.         mSpeaker.Play("RestPose")


Tại sự kiện Command của mainAgent

  1. Dim command As AgentObjects.IAgentCtlUserInput = DirectCast(e.userInput, AgentObjects.IAgentCtlUserInput)
  2.  
  3.         ' Đổi nhân vật nếu người dùng đọc tên nhân vật.
  4.         If command.Voice = "Peedy" OrElse command.Voice = "Robby" OrElse command.Voice = "Merlin" OrElse command.Voice = "Genie" Then
  5.             ChangeCharacter(command.Voice)
  6.             Return
  7.         End If
  8.  
  9.         ' Gửi agent đến chuột.
  10.         If command.Name = "MoveToMouse" Then
  11.             mSpeaker.MoveTo(Convert.ToInt16(Cursor.Position.X - 60), Convert.ToInt16(Cursor.Position.Y - 60), Nothing)
  12.             Return
  13.         End If
  14.  
  15.         ' Thực hiện hành động mới.
  16.         mSpeaker.[Stop](Nothing)
  17.         mSpeaker.Play(command.Name)


Để sử dụng thử, bạn điền vào txtLocation đường dẫn như sau :

"C:\WINDOWS\msagent\chars\"
Sau đó nhấn Enter.
Và chọn các hành động để xem thử.
Và gõ vài câu trong ô txtSpeech và nhấn vào button thử xem.



Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Kỹ thuật hoạt hình với Microsoft Agent Control 2.0

Gửi bàigửi bởi vo_minhdat2007 » T.Năm 10/02/2011 12:08 pm

Cái này hay cực kì, nhưng tiếc là không hỗ trợ Unicode :( Với lại Win 7 không có sẵn agent như Windows XP, phải cài trước.

Hình đại diện của người dùng
nimgiaminh
Thành viên danh dự
Thành viên danh dự
Bài viết: 432
Ngày tham gia: T.Bảy 07/08/2010 9:24 am
Đến từ: Ở dưới đó đó
Has thanked: 6 time
Been thanked: 18 time
Liên hệ:

Re: Kỹ thuật hoạt hình với Microsoft Agent Control 2.0

Gửi bàigửi bởi nimgiaminh » T.Năm 10/02/2011 12:55 pm

Mình có bộ cài đặt 3 hình của microsoft. Tặng cho các bạn nào thích, mình đang dùng Microsoft Agent Character Editor để làm thêm vài cái coi chơi :D
Tập tin đính kèm
hinhanh.rar
(6.82 MiB) Đã tải 620 lần


Quay về “[.NET] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách