BEKNOPTE ZELF-STUDIEHANDLEIDNG HYPERTALK VOOR TO EN TCW STUDENTEN
Door Frans Houweling, Ben Reimerink en Rik Min
1e versie okt. 1996.
2e versie okt. 1997.
Deze handleiding is bij een aantal vakken goed te gebruiken en bevat stof zoals bij praktica regelmatig aan de orde komt.
Dit is een samenvatting van de sheets van de colleges multimedia-programmeren. Zie voor details en andere zaken die aan de orde komen ook het boek van Shafer.
De taal
'HyperTalk' is een scripttaal (een object georienteerde programmeertaal) binnen HyperCard. Elk object van of in HyperCard kan geprogrammeerd worden met kleine of grote scriptje.
De programmeertaal bestaat uit:
actie elementen
deze zorgen ervoor dat er iets in de omgeving waarin je werkt gebeurt.
passieve elementen
controle structuren (if then else etc.)
variabelen
eigenschappen - globale properties en properties die bij een of meerder objecten horen. Zie pagina 291 van Shafer.
chunks
objecten, zoals button, card, stack, field, window etc.
Variabelen en actie elementen hebben een naam die uit een woord bestaat. Deze mag wel lang zijn.
Objecten
Objecten mogen namen hebben die uit meerder woorden bestaan. Begin met een letter.
Het eerste karakter is belangrijk bijv go 1234nogwat gaat mis, want hypercard ziet de het eerste karakter en ziet dus een cijfer, en neemt aan dat het wel een cardID zal zijn.
Actie elementen
Aktie elementen zijn:
messages - boodschappen
handlers
scripts
Alle commando's die je geeft in hypertalk zijn messages.
Er zijn gewone en system messages. System messages worden gegenereerd door Hypercard kom ik later op.
Als programmeur verstuur je gewone messages (genereer) je door een aanroep Bijv VISUAL. Bijv. visual effect barn door close (visual is de message-naam de rest zijn parameters.
De gebruiker van de stack kan ook boodschappen laten versturen. De drie M's:
Mouse, Menu en MessageBox. + Keyboard. Hieraan kun je dan acties verbinden.
De gestuurde messages volgen een object hierarchie en je kunt deze doorbreken door send en pass te gebruiken.
Op blz. 58 van het boek van Shafer staat de message hierarchie.
3 M's
menu en messageBox messages gaan direct naar het kaartscript
mouse messages worden afgevangen door handlers in het object waarop geklikt wordt.
Heeft het desbetreffende object een handler voor de gestuurde message dan wordt de message daar afgehandeld. Zo niet dan wordt de message doorgestuurd naar het naasthoger gelegen object
Diversen
FIELD en BUTTON
CARD
BACKGROUND
STACK
EXTERNALS
LIBRARY STACKS
LIBRARY EXTERNALS
HOME STACK
HOME STACK EXTERNALS
HYPERCARD EXTERNALS
RESOURCES bijv. de stack dieren. Zie laatste kaart.
HYPERCARD
Je kunt de hierarchie uitbreiden met libraries d.m.v. start using "stackname" (stop using "stackname" als niet meer nodig). In de hierarchie zitten dus externals van jezelf, van de home stack en van hypercard
Pas op: heb je op een kaart en op je stack geen on Opencar, maar een van de lybraries heeft deze wel in het stackscript, dan wordt die wel uitgevoerd terwijl je dit misschien niet wilt.
Messages
Alle messages kun je afvangen d.m.v. Event handlers
Handlers
Er zijn twee soorten handlers Event Handlers en function handlers.
Je kunt ook zelf een handler schrijven om een door jezelf gedefieerde message af te vangen.
Een of meerdere Handlers vormen een script. Alle Objecten hebben een script.
Variables
Variabelen zijn opslagplaatsen van waarden.
met put zet je iets in een variabele of in een veld.
gebruik je alleen put dan komt het in de message Box.
Speciale waarden
Speciale variabelen zijn
IT. Alles van GET komt in IT. Het antwoord van answer, ask en read from file komt in IT.
Global tegenover Local
Global betekent dat de scope van de variabele groter is dan in de handler alleen. Elke keer dat je wilt refereren aan een globale variabele moet je het woordje "global" gebruiken.
Containers
Containers zijn plaatsen die iets kunnen bevatten. Een Variabele is dus een container.
IT, ME, the TARGET en TARGET ....
the Selection (de gehighlighte text in een veld)....
Messagebox, Field.....
Targets
extra aandacht voor target
The target verwijst naar het object dat de message ontvangt
Me is het object in wiens script de handler staat dit wordt uitgevoerd
Target is de inhoud van the target
Chunks
Chunks zijn delen van containers
The selection
Deze is leeg als er niets geselecteerd is.
Lines, Words, characters, Items
Itemdelimeter is meestal een komma maar kan ook iets anders zijn.
Set itemdelimeter to ":"
put werkt ook met velden en met chunks. Bijv. Put "something" after the selection
put "anything" before item 3 of line 5 of card field .......