![]() |
![]() |
|
|
خوب، امروز می خوام درباره MS-Agent که "مرلین" بهتون سلام و خوش آمد گویی کرد با استفاده از همین ActiveX درست شده. می خوام کلیات کار با این اکتیو ایکس جالب رو تو VB براتون بگم و برای استفاده اون تو وب از نرم افزار MASH به این آدرس: http://www.bellcraft.com/mash استفاده کنید. خوب برای شروع اول ببینید که اکتیو ایکسی به نام Microsoft Agent Control 2.0 دارید یا نه (منوی Project و سپس Components و بعد اونجا بگردین). در صورتی که Office رو دارین احتمالا این کنترل رو هم دارین چون Office Assistant هم از این کنترل استفاده می کنه. یه راه تشخیص ساده ترهم اینه که اگه مرلین رو تو این وبلاگ دیدین مشکلی ندارین وگرنه به آدرس: http://activex.microsoft.com/activex/controls/agent2/MSagent.exe برین و بعد مرلین رو از اینجا: http://www.microsoft.com/msagent/downloads/user.asp پیدا کنید و دانلود کنین. در صورتی که موقع حرف زدن مرلین صدایی نمی یاد و فقط نوشته میشه یه قسمتی به نام Text2Speech رو هم ندارین که باید از همون آدرس بالا اونو با زبان دلخواهتون دانلود کنین. خوب حالا این کنترل Microsoft Agent Control رو به پروژه اضافه کنید (همونطور که بالا گفتم) و بعد یه کنترل روی فرمتون قرار بدین. حالا یه Command Button هم رو فرمتون ایجاد کنین و این کدها رو در رویداد Click این دکمه بنویسید: Private Sub Command1_Click() Dim Merlin As AgentObjectsCtl.IAgentCtlCharacter Agent1.Characters.Load "Merlin" Set Merlin = Agent1.Characters.Character("Merlin") Merlin.Show End Sub خوب حالا پروژه رو اجرا کنین و رو دکمه کلیک کنید. چی می بینید؟ (اگه error میبینید تقصیر من نیست، احتمالا Merlin رو ندارین. از آدرس بالا دانلودش کنین.) خوب تو سطر دوم یه متغیر به نام مرلین از نوم کاراکتر MS-Agent تعریف کردیم و بعد کاراکتر مرلین رو لود کردیم. و بعد متغیر مرلین رو به کاراکتر مرلین ست کردیم تا تو سطر بعدی به جای اینکه بنویسیم Agent1.Characters.Character(“Merlin”).Show فقط بنویسیم Merlin.Show. این کارمونو آسون میکنه. خوب Merlin.Show هم که مشخصه، شاخ شمشاد رو رو صفحه نشون میده. حالا بذارین یه ذره مرلین رو حرکت بدیم، به حرف واداریم و متحرک کنیم، پس کد Command1_Click رو به صورت زیر تغییر بدین: Private Sub Command1_Click() Dim Merlin As AgentObjectsCtl.IAgentCtlCharacter Agent1.Characters.Load "Merlin" Set Merlin = Agent1.Characters.Character("Merlin") Merlin.Show Merlin.MoveTo Screen.Width / 2 / 15 - Merlin.Width / 2, Screen.Height / 2 / 15 - Merlin.Height / 2 Merlin.Speak "Helllo! Now, I'm Speaking with you!" Merlin.Play "Greet" End Sub خوب سطر اول تا پنجم که همون قبلیاست. تو خط ششم مرلین رو حرکت دادیم به وسط صفحه (تقسیم بر 15 به این خاطره که اندازه صفحه به Twip بود و با تقسیم اون بر 15 بر حسب Pixel بدست میاد.). تو خط هفتم مرلین جمله تو گیومه رو میخونه (اگه Text2Speech داشته باشین) و تو خط آخر یک انیمیشن اجرا میشه که مرلین تعظیم میکنه. خوب تا اینجا با کلیات MS-Agent آشنا شدین. خوب الان می خوایم با هم یک برنامه ساده بنویسیم تا لیستی از انیمیشنهای قابل اجرای یک کاراکتر مثل مرلین رو بدست بیاریم و اونا رو اجرا کنیم. پس یک پروژه جدید باز کنین و یک List Box روی فرم قرار بدین و این کد رو وارد کنین: اول تو قسمت General کد زیر رو بنویسید: Dim Merlin As AgentObjectsCtl.IAgentCtlCharacter وبعد: Private Sub Form_Load() Agent1.Characters.Load ("Merlin") Set Merlin = Form1.Agent1.Characters("Merlin") Merlin.Show For Each anim In Merlin.AnimationNames List1.AddItem anim Next End Sub Private Sub List1_Click() Merlin.StopAll Merlin.Play List1.List(List1.ListIndex) End Sub خوب تا خط چهارم رو که توضیح دادم. مرلین رو لود می کنیم و یک متغیر بهش ست می کنیم تا کار راحتتر شه. و بعد مرلین رو رو صفحه نمایش می دیم. تو خط پنجم، از دستور For Each که برای Enumeration یا لیست گرفتن استفاده میشه استفاده کردیم و به ازای هر انیمیشن در مجموعه انیمیشنهای ساپورت شده کاراکترمون یعنی مرلین، یک آیتم با نام انیمیشن رو به لیستمون اضافه میکنه. در رویداد کلیک لیستمون هم اول به مرلین گفتیم که آب دستته بذار زمین! یعنی هر کاری داری می کنی دست نگه دار. بعد انیمیشن کلیک شده در لیست رو Play کردیم. خوب حالا پروژه رو اجرا کنین و روی هر کدوم از انیمیشن ها کلیک کنین. جالبه نه؟! خوب حالا خصوصیات و متد های مهم آبجکت کاراکتر رو براتون میگم: · Balloon که خودش یک آبجکته و اگه یه نقطه بذارین خصوصیاتش نشون داده میشن. با این آبجکت می تونین خصوصیات بالنی که موقع حرف زدن کاراکتر بالای سرش ظاهر میشه و متن رو توش می نویسه رو تغییر بدین. مثلا رنگشو عوض کنین و... · Commands که برای Speech Recognition یا تشخیص صدا استفاده میشه و شرحشو بعدا میدم (چون الان Speech Recognition Engine رو ندارم و باید دانلودش کنم!). · متد Gesture At که برای اشاره کردن کاراکتر به یک نقطه خاص استفاده میشه و دو پارامتر X و Y رو بر حسب پیکسل میگیره و به اون نقطه از صفحه اشاره میکنه. این متد رو امتحان کنید تا متوجه بشین! · Height و Width که معلومه اندازه کاراکتر رو مشخص میکنه. با تغییر این خصوصیات میتونین از مرلین یه کوتوله بسازین! امتحان کنین! · Hide هم که مشخصه. مخالف Show. باعث مخفی شدن کاراکتر میشه. · IdleOn که اگه True باشه، کاراکتر یه سری حرکات مثل خمیازه کشیدن و ... رو در زمان بیکاری انجام میده. · متد MoveTO که باهاش می تونین مرلین رو رو صفحه حرکت بدین. علاوه بر مختصات یه پارامتر سرعت هم دره که باهاش سرعت حرکت رو میتونین تعیین کنید. · Play رو هم که برای انجام انیمیشن استفاده کردیم. · Speak که برای صحبت کردن کاراکتر به کار میره و بعد از این متد متن مورد نظر رو تو گیومه می نویسیم. این متد چند تا گزینه هم داره که به این شرحن: \Chr\ که میتونه مقدار “Monotone” و یا “Whisper” رو بگیره. اولی باعث تولید صدایی شبیه به آدم آهنی میشه و دومی مثل در گوشی صحبت کردن! \Ctx\ که میتونه دو مقدار "”Email و “Address” رو بگیره و اولی برای خواندن آدرس Email و دومی برای خواندن آدرس Web Site استفاده میشه. \Pit\ که برای کنترل صدا به کار میره. صدای بم که از 50 شروع میشه و صدای زیر که به 400 میرسه (البته 400 خنده دار میشه!) \Spd\ که برای کنترل سرعت خوندن متن به کار میره. میتونه بین 50 تا 250 باشه. \Vol\ که مشخصه! بلندی صدا رو تعیین میکنه. مقدارش بین 1 تا 65535 میتونه باشه. خوب حالا این کد رو تو رویداد Click یک Command Button بنویسید و امتحانش کنید. میتونین مقدارهارو تغییر بدین تا متوجه کارشون بشین (البته در صورتی که از پروژه قبلی استفاده می کنید دیگه لازم نیست کاراکتر رو لود کنین): Agent1.Characters.Load "Merlin" Set Merlin = Form1.Agent1.Characters("Merlin") Merlin.Show َMerlin.Speak "\Vol=65535\\Pit=205\\Spd=171\\Chr=""Whisper""\\Ctx=""Address""\ehsanfa.persianblog.com" · آخرین متدها Stop و Stop All باعث توقف عمل یا اعمال در حال انجام میشن. (در صورتی که می خواین فقط یک عمل متوقف بشه Stop ولی در صورتی که می خواین کل اعمال متوقف بشه Stop All رو استفاده کنین.) خوب امیدوارم از این مطالب خوشتون اومده باشه. تو قسمت بعدی Speech Recognition و یک نمایش کوتاه رو می نویسم و بعد یک موضوع جدید که هنوز تصمیم نگرفتم رو شروع میکنم. پس منتظر باشین و صدویک البته نظر بدین! اگه در این مورد سئوالی بود در صورت دونستن در خدمتیم. برنامه های مربوط به این موضوع رو تا چند روز دیگه براتون می زارم . نزدیک عید و هزار تا کار و شلوغی سر . و اگه وقت نشه دیگه می فته واسه بعد از عید. البته سال 85 هم با اربعین حسین شروع می شه . عیده و امسال عیدی ندارم. موفق باشید . |
|
+ نوشته شده در
یکشنبه 21 اسفند1384ساعت 20:12 توسط مسعود |
|
|
صفحه نخست پست الکترونیک آرشیو |
| درباره وبلاگ |
|
بر گوش جانم می رسد آوای زنگ قافله
این قافله تا کربلا دیگر ندارد فاصله |
| لینک های دیدنی |
| فعلا نداریم. |