キャラクタアニメーション ( Microsoft Agent )

  msagent.vbs ( WSH )



agentsvr.exe に対するメッセージのポストでキャラクタの動きが決まる為、スクリプト
とは同期しません。その為、イベントでコントロールしています

  
Set objAgent = WScript.CreateObject("Agent.Control.1", "MyAgentEvent_")
  

  
' キャラクタ名
strAgentName = "Merlin"
' サンプル? ファイル
strAgentPath = "c:\windows\msagent\chars\" & strAgentName & ".acs"
Set objAgent = WScript.CreateObject("Agent.Control.1", "MyAgentEvent_")

bBreak = False
Sub MyAgentEvent_RequestComplete(Request)
	bBreak = True
End Sub
Sub MyAgentEvent_RequestStart(Request)

End Sub

bClcik = False
' クリックイベント
Sub MyAgentEvent_Click(CharacterID, Button, Shift, x, y)
	' 左クリック
	if Button and &H1 then
		bClick = True
	end if
	' 右クリック
	if Button and &H2 then
		objCharacter.Play "Announce"	' 動作( ラッパを吹きます )
		objCharacter.Speak "マウスで左クリックして下さい"
	end if
End Sub

' **********************************************************
' 準備
' **********************************************************
objAgent.Connected = TRUE
objAgent.Characters.Load strAgentName, strAgentPath
Set objCharacter = objAgent.Characters.Character(strAgentName)

objCharacter.Show	' 表示

objCharacter.Play "Announce"	' 動作( ラッパを吹きます )
' イベントを発生させる為にリクエストオブジェクトを取得します
Set objRequest = objCharacter.Speak( "こんにちは、お元気ですか?" )
Do
	Wscript.Sleep 500
	if bBreak then
		' 処理完了イベントによるループ終了
		bBreak = False
		Exit Do
	end if
Loop
Wscript.Sleep 1500	' セリフを表示する時間

objCharacter.Play "LookDown"	' 動作
' Speak と吹き出しが違います
objCharacter.Think "ちょっと移動しますね ...."
objCharacter.MoveTo 500,400		' 移動( 飛びます )

objCharacter.Play "Pleased"		' 動作
objCharacter.Speak "マウスで左クリックして下さい"
Do
	Wscript.Sleep 500
	if bClick then
		' 左クリックによるループ終了
		bClick = False
		Exit Do
	end if
Loop

objCharacter.Play "Pleased"		' 動作
' イベントを発生させる為にリクエストオブジェクトを取得します
Set objRequest = objCharacter.Speak( "それではさようなら" )
Do
	Wscript.Sleep 500
	if bBreak then
		' 処理完了イベントによるループ終了
		bBreak = False
		Exit Do
	end if
Loop
Wscript.Sleep 1500	' セリフを表示する時間

objCharacter.Hide	' 消えます

' スクリプトが実行中でないとサーバの処理が終わって
' しまうので、Hide メソッドが終了するまで待ちます
Do While objCharacter.Visible = TRUE
	Wscript.Sleep 100
Loop
  

Microsoft US へのリンク
http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx
http://msdn.microsoft.com/en-us/library/ms695784.aspx
上記より
-> Programming Microsoft Agent
-> Programming the Microsoft Agent Server Interface
-> Reference
-> IAgentCharacter





  msagent.htm



  
<SCRIPT language=VBScript>

	Dim objRequestTarget,objRequest1,objRequest2
	Dim objCharacter

Sub ScreenPlay()

	Select Case objRequestTarget
	Case objRequest1
		objCharacter.Play "LookDown"	' 動作
		' Speak と吹き出しが違います
		objCharacter.Think "ちょっと移動しますね ...."
		objCharacter.MoveTo 500,400		' 移動( 飛びます )

		objCharacter.Play "Pleased"		' 動作
		objCharacter.Speak "マウスで左クリックして下さい"
	Case objRequest2
		objCharacter.Hide	' 消えます
	End Select

End Sub

</SCRIPT>

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY>
<OBJECT
	classid=clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F
	id=objAgent
></OBJECT>

</BODY>
</HTML>
<SCRIPT for=window event=onload language="VBScript">

	' キャラクタ名
	strAgentName = "Merlin"
	' サンプル? ファイル
	strAgentPath = "c:\windows\msagent\chars\" & strAgentName & ".acs"

' **********************************************************
' 準備
' **********************************************************
	objAgent.Connected = TRUE
	objAgent.Characters.Load strAgentName, strAgentPath
	Set objCharacter = objAgent.Characters.Character(strAgentName)

	objCharacter.Show	' 表示

	' 最初の動作
	objCharacter.Play "Announce"	' 動作( ラッパを吹きます )
	' RequestComplete を発生させる為にリクエストオブジェクトを取得しておきます
	Set objRequest1 = objCharacter.Speak( "こんにちは、お元気ですか?" )

</SCRIPT>
<SCRIPT LANGUAGE=VBScript For=objAgent Event=RequestComplete(Request)>

	' スクリプトタグによる動作完了イベント記述
	Set objRequestTarget = Request
	Call window.setTimeout( "ScreenPlay", 1500 )

</SCRIPT>
<SCRIPT language=VBScript>

' Sub によるクリックイベント記述
Sub objAgent_Click(CharacterID, Button, Shift, x, y)

	' 左クリック
	if Button and &H1 then
		if objRequestTarget = objRequest1 then
			objCharacter.Play "Pleased"		' 動作
			' RequestComplete を発生させる為にリクエストオブジェクトを取得します
			Set objRequest2 = objCharacter.Speak( "それではさようなら" )
		end if
	end if

End Sub

</SCRIPT>
  



  VB

■ Sleep は Win32 APIです
■ 参照設定で Mcirosoft Agent Control 2.0 をチェックしています

  
Option Explicit

Dim WithEvents objAgent As Agent
Dim strAgentName, strAgentPath
Dim objCharacter, objRequest1, objRequest2

Private Sub Form_Load()

    Set objAgent = New Agent

    ' キャラクタ名
    strAgentName = "Merlin"
    ' サンプル? ファイル
    strAgentPath = "c:\windows\msagent\chars\" & strAgentName & ".acs"

' **********************************************************
' 準備
' **********************************************************
    objAgent.Connected = True
    objAgent.Characters.Load strAgentName, strAgentPath
    Set objCharacter = objAgent.Characters.Character(strAgentName)

    objCharacter.Show   ' 表示

    ' 最初の動作
    objCharacter.Play "Announce"    ' 動作( ラッパを吹きます )
    ' イベント前にはリクエストオブジェクトを取得しておきます
    Set objRequest1 = objCharacter.Speak("こんにちは、お元気ですか?")

End Sub

Private Sub objAgent_RequestComplete(ByVal Request As Object)

    If objRequest1 = Request Then
        Sleep 1500
        objCharacter.Play "LookDown"    ' 動作
        ' Speak と吹き出しが違います
        objCharacter.Think "ちょっと移動しますね ...."
        objCharacter.MoveTo 500, 400    ' 移動( 飛びます )
        
        objCharacter.Play "Pleased"     ' 動作
        ' イベント前にはリクエストオブジェクトを取得しておきます
        objCharacter.Speak "マウスで左クリックして下さい"
    End If
    If objRequest2 = Request Then
        Sleep 1500
        objCharacter.Hide   ' 消えます
    End If
    
End Sub

Private Sub objAgent_Click( _
    ByVal CharacterID As String, _
    ByVal Button As Integer, _
    ByVal Shift As Integer, _
    ByVal x As Integer, _
    ByVal y As Integer _
)

    ' 左クリック
    If Button And &H1 Then
        objCharacter.Play "Pleased"     ' 動作
        ' イベント前にはリクエストオブジェクトを取得しておきます
        Set objRequest2 = objCharacter.Speak("それではさようなら")
    End If

End Sub

  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ