Pr∙vodce tvorbou nßpov∞dy - 7. dφl



Vß₧enφ a milφ Φtenß°i,

dneÜnφ dφl serißlu bude, jak jsem ostatn∞ ji₧ minule anoncoval, o tvorb∞ virtußlnφch pomocnφk∙. Mo₧nß se v tΘto chvφli sami sebe ptßte, zda-li je to v∙bec mo₧nΘ. V₧dy¥ na hodinßch programovßnφ se tato lßtka neprobφrala, knihy o tvorb∞ softwaru se ji ·sp∞Ün∞ vyh²bajφ a ani vy jste dosud o nφ nev∞d∞li. Inu, urΦit∞ nejste jedinφ.

Microsoft Agent, nynφ dostupn² ve verzi 2.0, poskytuje ·plnou technologii s programov²m rozhranφm, kterß m∙₧e b²t naprogramovßna jak²mkoliv jazykem podporujφcφm COM (Component Object Model). Rovn∞₧ obsahuje i ovlßdacφ prvek ActiveX, pomocφ kterΘho lze pomocnφka snadno programovat i z prost°edφ internetov²ch strßnek prost°ednictvφm jazyka VBScript, nebo JScript. Technologie MS Agent je tedy znaΦn∞ rozsßhlejÜφ a jejφ implementace v podob∞ pomocnφka Office je jenom jedna z mnoha ukßzek.

Pro vytvß°enφ pomocnφk∙ slou₧φ softwarov² nßstroj s nßzvem Microsoft Agent Character Editor. Je obsa₧en v MS Platform SDK, nebo jsi jej m∙₧ete stßhnout z internetovΘ adresy http://www.microsoft.com/agent2/sdk/ace.exe. Jakmile editor nainstalujete, spus¥te jej. V hlavnφm okn∞ programu zam∞°te nejd°φve svou pozornost na zßlo₧ku Properties a sekci General Information. Do textovΘho pole Name zadejte jmΘno vaÜeho pomocnφka. Vypl≥te jeÜt∞ i pole Decription. Uve∩te v n∞m struΦn² popis pomocnφka.

Te∩ se podφvejte na stromovou strukturu prvk∙ na levΘ stran∞ editoru. M∞la by vypadat asi takhle:

Klepn∞te na polo₧ku Animations. Pravß strana se automaticky aktualizuje a poskytne vßm informace ohledn∞ zßkladnφch nastavenφ animaΦnφch rßmc∙. èφ°ka a v²Üka rßmce je standardn∞ stanovena na 128 krßt 128 pixel∙ a podle doporuΦenφ byste tyhle hodnoty nem∞ly m∞nit. Trvßnφ ka₧dΘho snφmku je pak nastaveno na 1/10 vte°iny.

Pomocnφk se na obrazovce monitoru prezentuje jako animovanß postaviΦka. Proto i vy budete muset sestavit animaΦnφ sekvence, kterΘ budou charakterizovat vaÜeho pomocnφka. Je zcela na vaÜem rozhodnutφ, co vlastn∞ bude p°edm∞tem vaÜeho animaΦnφho sna₧enφ. Pochopiteln∞, ₧e animovat lze tak°ka cokoliv, no ze zaΦßtku bude dobrΘ, kdy₧ jsi vyberete jednoduÜÜφ p°edm∞ty. V naÜem p°φpad∞ jsem zvolil pom∞rn∞ jednoduch² animaΦnφ objekt, a sice otaznφk. SamotnΘ animace nelze vytvß°et rovno v prost°edφ MS Agent Character Editoru, budete proto muset pou₧φt jin² grafick² software. JednotlivΘ snφmky nßsledn∞ ulo₧φte ve 256-barevnΘm schΘmatu formßtu .BMP nebo .GIF a ty pak pou₧ijete v editoru. Pro zjednoduÜenφ budu operovat jenom se dv∞ma snφmky, kterΘ vypadajφ takhle:á

 

Pokud mßte p°ipraveny obrßzky pro animaci, vra¥te se zp∞t do editoru charakter∙. Na panelu nßstroj∙ klepn∞te na ikonu pro p°idßnφ novΘ animace (viz spodnφ obrßzek), nebo zvolte z nabφdky Edit p°φkaz New animation.

Dßle p°idejte animaΦnφ snφmky (v naÜem p°φpade budou staΦit pouze dva) aktivacφ tlaΦφtka New Animation Frame, anebo jestli chcete, m∙₧ete op∞t vyu₧φt cestu p°es menu Edit a zvolit polo₧ku New Frame. Obrßzek tlaΦφtka je uveden nφ₧e.

Nßsledujφcφ postup je snadn². Do jednotliv²ch rßmc∙ vlo₧te obrßzky pomocφ tlaΦφtka Add Image. Okno programu by m∞lo vypadat asi takhle:

Upravit pozici obrßzku lze nastavenφm sou°adnic v oddφlu Position. Kdy₧ jste se sv²mi obrßzky spokojeni, klepn∞te na polo₧ku Animation, kterß se nachßzφ ve stromovΘ struktu°e v levΘ Φßsti editoru. Na zßlo₧ce Properties, v sekci Assign to State zaÜkrtn∞te polφΦka Showing a IdlingLevel1. Prßv∞ jste p°i°adili animaci k urΦit²m stav∙m virtußlnφho pomocnφka. Jak vidφte, pomocnφk se m∙₧e nachßzet ve vφce stavech, kterΘ zßvisφ od mo₧nosti interakce se sv²m okolφm. Pokud budete chtφt, m∙₧ete nakreslit mnoho animacφ a ka₧dou z nich spojit s urΦit²m stavem. Asistent pak bude ä₧iv∞jÜφô a bude schopn² reagovat na mnohΘ podn∞ty ze strany u₧ivatele.

Aby asistent pln∞ vyhovoval naÜim po₧adavk∙m, musφ b²t barva pozadφ pr∙hlednß. Editor standardn∞ urΦuje pr∙hlednou barvu jako jedenßctou barvu z grafickΘ palety, kterou pou₧φvß prvnφ obrßzek. Aby bylo pozadφ zcela "neviditelnΘ", musφme jsi pomoci mal²m trikem. Klikn∞te na polo₧ku Animations ve stromovΘ struktu°e a na zßlo₧ce Properties jsi vÜimn∞te spodnφ Φßsti (Palette Information). Kterß barva byla editorem vybrßna je ukßzßno p°i polo₧ce Transparency color. V mΘm p°φpad∞ je transparentnφ barva tmav∞ modrß, jak je ilustrovßno nφ₧e:

Abyste docφlili pr∙hlednΘho pozadφ, barvu pozadφ ve vÜech obrßzcφch animace zm∞≥te na tu, kterou editor vybral jako barvu transparentnφ (v mΘm p°φpad∞ tmav∞ modrß). Tedy v²sledek bude takov²to:

Dobrß, o transparentnφ barvu je koneΦn∞ vystarßno. Zb²vß u₧ jenom profil pomocnφka ulo₧it a vygenerovat prav² soubor .ACS, tedy soubor pomocnφka. Klepn∞te na ikonu diskety pro ulo₧enφ a nßsledn∞ klepn∞te i na ikonu pro sestavenφ pomocnφka:

Po ·sp∞Ün∞ uskuteΦn∞nΘ kompilaci mßte k dispozici sv∙j vlastnφ soubor pomocnφka.

P°esto₧e se to mo₧nß nezdß, zatφm jsme urazili jenom prvnφ polovinu naÜφ dneÜnφ v²pravy do sv∞ta poΦφtaΦovΘ nßpov∞dy. Pro plnΘ vyu₧itφ je pot°ebnΘ implementovat schopnosti pomocnφka do aplikace VB. Dovolφm si proto pov∞d∞t vßm n∞co o teorii.

Slu₧by pomocnφka mß na starosti MS Agent, kterΘho soubory se nachßzejφ standardn∞ ve slo₧ce MSAgent, kterß je podslo₧kou slo₧ky operaΦnφho systΘmu Windows. Pokud otev°ete v pr∙zkumnφkovi slo₧ku MSAgent, uvidφte, ₧e se zde nachßzφ serverovß aplikace Microsoft Agent Server a spousta dynamicky linkovan²ch knihoven, ze kter²ch je nejpodstatn∞jÜφ ta s nßzvem AgentCtl.dll. Dßle zde m∙₧ete vid∞t i slo₧ku Chars, ve kterΘ jsou ulo₧eny n∞kterΘ profily pomocnφk∙. Pomocnφk je poka₧dΘ spouÜt∞n ve svΘm vlastnφm procesu, a tedy je nezßvisl² od aplikace, kterß jsi vy₧ßdala jeho aktivaci. Uveden² p°φstup disponuje mnoha v²hodami, nap°. u₧ivatel m∙₧e zßrove≥ pracovat s aplikacφ i s pomocnφkem, nebo dokonce m∙₧e b²t na monitoru zobrazeno najednou i vφce pomocnφk∙. V nastßvajφcφm oddφlu jsi ukß₧eme, jak vyvolat asistenta z aplikace VB a jak mu p°ikßzat, aby n∞co "°ekl".

Kdy₧ jste tak jeÜt∞ neuΦinily, spus¥te VB. Pro demonstraΦnφ ·Φely p°idejte na formulß° jedno tlaΦφtko, kterΘ pojmenujte. Dßle aktivujte nabφdku Project a vyberte polo₧ku Components.... Ve zobrazenΘm dialogovΘm okn∞ klepn∞te na zßlo₧ku Controls a v seznamu vyberte polo₧ku Microsoft Agent Control 2.0. Jakmile stiskn∞te tlaΦφtko OK, objevφ se na panelu nßstroj∙ ikona prezentujφcφ ovlßdacφ prvek Agent (viz nφ₧e).

Umφst∞te jednu instanci prvku na formulß°. Do obsluhy udßlosti Click tlaΦφtka zapiÜte tento k≤d:

Agent1.Characters.Load "Pom1", "c:\pomocnφk1.acs"
Agent1.Characters("Pom1").Show

Tento k≤d zabezpeΦφ zobrazenφ pomocnφka na monitoru. Absolutnφ cestu k souboru pomocnφka lze upravit i relativn∞, nap°. pomocφ formule App.Path &"\pomocnφk1.acs". Samoz°ejm∞, ₧e pak by bylo nutnΘ jeÜt∞ testovat podmφnku, zda-li poslednφ znak °et∞zce App.Path obsahuje zp∞tnΘ lomφtko Φi nikoliv a v p°φpad∞ pot°eby na konec °et∞zce tento znak p°idat. Pokud budete chtφt, aby se pomocnφk i sluÜn∞ p°edstavil, dopl≥te k≤d takto:

Agent1.Characters("Pom1").Speak "Dobr² den, jß jsem vßÜ pomocnφk."

A skuteΦnß podoba pomocnφka:

Skr²t pomocnφka je mo₧nΘ p°φkazem Agent1.Characters("Pom1").Hide a jeho odstran∞nφ z pam∞ti provedete pomocφ zßpisu Agent1.Characters.Unload "Pom1". Je snad samo sebou, ₧e si zßpis m∙₧ete pom∞rn∞ snadno zkrßtit, pohlΘdn∞te na nßsledujφcφ p°φklad:

Dim h As Object
Agent1.Characters.Load "Pom1", App.Path & "\pomocnφk1.acs"

Set h = Agent1.Characters("Pom1")
h.Show
h.Speak "To jsem jß, vßÜ pomocnφk."

Vlastnosti bublinovΘho okna pomocnφka lze m∞nit v editoru charakter∙. Experimentovßnφ u₧ ponechßm na vßs, jenom p°ipomenu, ₧e m∞nit lze nap°. barvu textu a pozadφ, font pφsma, poΦet znak∙ na °ßdek, poΦet °ßdku v bublinovΘm okn∞, automatickΘ skr²vßnφ nßpov∞dnΘho okna nebo zobrazovßnφ v∞t po jednotliv²ch slovech. VÜechny vlastnosti najdete na zßlo₧ce Word Balloon.

Jak jsem v ·vodu vzpomφnal, pomocnφka lze zavolat i z internetovΘ strßnky. Jak to ud∞lat si ukß₧eme prßv∞ te∩. Vytvo°φme jednoduchou internetovou strßnku, na kterΘ bude umφst∞nΘ pouze jedno tlaΦφtko, po stisknutφ kterΘho se objevφ pomocnφk. K≤d HTML je nßsledujφcφ:

<html>
<head>
<title>Aktivace pomocnφka</title>

<script language="vbscript">
sub b1_onclick()
dim h
agent1.characters.load "Pom1", "c:\pomocnφk1.acs"
set h = agent1.characters("Pom1")
h.show
h.speak "P°φklad aktivace pomocnφka z internetovΘ strßnky."
end sub
</script>

</head>
<body>
<p>
<object classid="clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F" id="agent1">
</object>
</p>

<input type=button name=b1 value="Zobrazit pomocnφka">

</body>
</html>

V²sledek:

Tak a to by bylo pro dneÜek vÜe. T∞Üφm se na shledanou op∞t za m∞sφc.

Jßn Hanßk