infcom@NKSA  

Flash:  Orchester  interaktiv  

Nicolas  Ruh    

Import von Sounds Wie kommt man zu Tönen? Es   gibt   eine   Reihe   von   Webseiten,   von   denen   man   sich   viele   lizenzfreie   Sounds   gratis   oder  für  wenig  Geld  herunterladen  kann.  Am  besten  suchen  sie  sich  solche  Websites  mit   Google,   indem   sie   die   Begriffe   "Sound"   "download"   und   "free"   eingeben.   Die   Suche   dauert   dann   ein   wenig,   weil   man   leider   auch   viele   schlechte   Töne   findet   und   dann   die   Spreu  vom  Weizen  trennen  muss.   Hier  einige  Links  zu  Seiten,  mit  denen  ich  recht  gute  Erfahrungen  gemacht  habe:   • • •

http://flashkit.com/soundfx/   http://www.freesound.org/searchText.php   http://www.pacdv.com/sounds/  

Ein   weitere   Möglichkeit   ist,   sich   im   Fachhandel   eine   CD   zu   kaufen,   auf   denen   Sounds   gespeichert   sind.   Solche   CDs   gibt   es   mittlerweile   zu   allen   nur   erdenklichen   Themen   und   Musikstilen.   Der   Vorteil   von   CDs   ist   es,   dass   die   Töne   in   den   meisten   Fällen   in   verschiedenen   Formaten   angeboten   werden,   was   einem   das   mühsame   Konvertieren   vom  einen  ins  andere  Format  erspart.  

Welche Formate frisst Flash? Auf   welchem   Betriebssystem   man   auch   immer   arbeitet,   MP3   kann   Flash   jederzeit   verarbeiten.   Aber:   MP3   ist   ein   Format,   dass   schon   komprimiert   ist.   Wenn   man   einen   Sound   in   Flash   beim   Veröffentlichen   eines   Filmes   noch   mehr   komprimieren   möchte,   kann  das  in  einigen  Fällen  zu  bösen  Überraschungen  führen.   Arbeitet   man   unter   Windows,   kann   man   das   Format   WAV   in   Flash   importieren.   In   der   Regel  gibt  das  die  besseren  Resultate  als  beim  Verarbeiten  von  MP3-­‐Sounds.   MAC-­‐User   verwenden   am   besten   das   AIFF-­‐Format.   Aber   keine   Sorge,   auch   WAV   kann   importiert  werden,  falls  QuickTime  installiert  ist,  was  ja  in  der  Regel  der  Fall  ist.  

Import von Bildern Flash   kann   mit   allen   gängigen   Bildformaten   arbeiten,   also   mit   den   Webformaten   JPG,   GIF,   PNG,   aber   auch   mit   BMP   oder   TIFF.   In   neuen   Versionen   ist   auch   der   "Direktimport"   -­‐   zum   Beispiel   mit   der   Zwischenablage   -­‐   aus   Photoshop,   Fireworks   und   Illustrator   dazugekommen,  weil  ja  nun  alle  Programme  unter  einem  Dach  vereint  sind.  Im  letzteren   Fall   werden   sogar   die   Ebenen   übernommen.   Falls   keine   teure   Bildbearbeitungssoftware   zur  Verfügung  steht  und  man  mit  Transparenz  arbeiten  möchte,  wählt  man  als  Import-­‐ Format  am  besten  PNG.  

Import wohin? Der   Import   erfolgt   über   den   Hauptmenu-­‐Befehl   Datei/Importieren.   Darauf   muss   man   sich   noch   entscheiden,   wohin   importiert   werden   soll:   In   Bühne   importieren...   oder   In   Bibliothek  importieren....  Wenn  sie  sich  für  die  Bühne  entscheiden,  wird  die  Datei  auch   in   der   Bibliothek   abgelegt,   was   für   Einsteiger   in   Flash   etwas   verwirrend   wirkt,   aber   eigentlich  durchaus  logisch  ist.   Quelle:  http://www.learning-­‐how.to/flash-­‐einsteiger/Dateien-­‐importieren/content-­‐docs/02-­‐importieren.php,  angepasst  von  Nicolas  Ruh  

infcom@NKSA  

Flash:  Orchester  interaktiv  

Nicolas  Ruh    

Orchesterbeispiel In  dieser  Übung  geht  es  u.a.  um  den  Import  von  Bildern  und  Sounds.  Ausserdem  werden   wir   unsichtbare   Schaltflächen   erstellen   und   Sounds   auf   "Befehl"   des   User   abspielen   lassen:   wenn   man   mit   der   Maus   auf   eines   der   Instrumente   klickt,   soll   der   Name   des   Instruments  angezeigt  werden  und  der  zugehörige  Sound  soll  ertönen.  

Dateien importieren Als  erstes  bereiten  wir  alles  vor  und  importieren  alle  nötigen  Dateien.   Laden   sie   sich   dazu   den   Ordner   Orchester.zip   herunter   und   entpacken   sie   ihn   auf   der   Festplatte.   Darin   befindet   sich   das   Ausgangsmaterial   für   unsere   Übung:   ein   Bild   und   sechs  verschiedene  Töne.  Und  so  geht’s  los:   1. Öffnen  sie  Flash  und  stellen  sie  die  Grösse  des  Dokuments  auf  300  x  275  Pixel.   2. Erstellen   sie   zwei   Ebenen,   nennen   sie   die   untere   "Instrumente",   die   obere   "Buttons"  oder  „Schaltflaechen“.   3. Mit   Datei/Importieren/In   Bibliothek   importieren...   holen   sie   das   Bild   in   Flash   hinein.  Es  sollte  jetzt  in  der  Bibliothek  sichtbar  sein.   4. Ziehen   sie   das   Bild   aus   der   Bibliothek   auf   die   Bühne   (Ebene   "Instrumente").   Positionieren  sie  das  Bild  im  Nullpunkt  (mittig)  und  sperren  sie  dann  die  Ebene.   5. Importieren  sie  jetzt  alle  Sounds  in  die  Bibliothek.  Töne  werden  dort  mit  einem   Lautsprecher-­‐Icon   angezeigt   und   können   mithilfe   des   kleiner   Pfeilbuttons   im   oberen  Bibliotheksfenster  probeweise  abgespielt  werden.   Nun  ist  alles  vorbereitet  und  sie  können  sich  daran  machen,  die  sechs  Instrumente  zum   interaktiven   Leben   zu   erwecken.   Im   Folgenden   wird   das   Vorgehen   am   Beispiel   der   E-­‐ Gitarre  beschrieben.  

Quelle:  http://www.learning-­‐how.to/flash-­‐einsteiger/Dateien-­‐importieren/content-­‐docs/02-­‐importieren.php,  angepasst  von  Nicolas  Ruh  

infcom@NKSA  

Flash:  Orchester  interaktiv  

Nicolas  Ruh    

Schaltfläche zeichnen Das  Ziel  ist,  dass  die  verschiedenen  Instrumente  reagieren  können,  wenn  der  Benutzer   mit   der   Maus   auf   sie   zeigt   oder   klickt.   Da   sich   jedoch   alle   Instrumente   in   einem   einzigen   Bild   befinden,   ist   es   schwierig   zu   unterscheiden,   ob   auf   die   Gitarre   oder   auf   den   Bass   geklickt   wurde.   Damit   das   trotzdem   funktioniert,   werden   wir   einen   Trick   anwenden:   unsichtbare  Schaltflächen.   Zeichnen   sie   eine   Form,   die   grob   der   Gitarre   entspricht   (in   der   Ebene   „Buttons“).   Am   einfachste   ist   wohl,   wenn   sie   mit   dem   Freihand-­‐Werkzeug   den   Umriss   nachfahren   (beachten   sie   bei   den   Eigenschaften   die   Option   „glätten“)   und   diesen   anschliessend   mithilfe   des   Farbeimer-­‐Werkzeugs   ausfüllen.   Alternativ   können   Sie   auch   einfach   die   ganze   Gitarre   mit   einem   Pinsel   ausmalen,   wobei   es   sich   ggf.   lohnt,   zwischendurch   die   Grösse  anzupassen.  Das  muss  keine  sehr  exakte  Arbeit  sein,  denn  die  Flächen  werden  im   fertigen  Film  dann  unsichtbar  sein.     Wenn  sie  mit  einem  Instrument  fertig  sind,  wählen  sie  die  nachgemalte  Fläche  aus  (z.B.   Doppelklick,   Fläche   UND   Umriss   auswählen!)   und   machen   sie   ein   sinnvoll   benanntes   Symbol  (Typ:  MovieClip)  daraus  –  z.B.  GitarreFlaeche.    

  Abbildung  1:  Ungefähr  so  sollten  dann  die  Schaltflächen  für  alle  Instrumente  aussehen.  

Achtung!:  GitarreFlaeche  ist  jetzt  der  Name  des  Symbols  in  der  Bibliothek.  Die  Instanz   (~Kopie)  des  Symbols,  die  sich  momentan  in  der  Bühne  befindet,  hat  bisher  noch  keinen   Namen.  Da  ein  solcher  Instanzname  aber  unerlässlich  ist,  wenn  wir  mit  Programmcode   arbeiten   wollen,   sollten   sie   im   Eigenschaftsfenster   der   Instanz   einen   vergeben,   z.B.   gitarre_mc1.    

                                                                                                                1  Damit   es   weniger   Verwirrung   gibt   sollten   Instanznamen   immer   mit   einem   kleinen   Buchstaben  beginnen,  Symbolnamen  dagegen  werden  gross  geschrieben.   Quelle:  http://www.learning-­‐how.to/flash-­‐einsteiger/Dateien-­‐importieren/content-­‐docs/02-­‐importieren.php,  angepasst  von  Nicolas  Ruh  

infcom@NKSA  

Flash:  Orchester  interaktiv  

Nicolas  Ruh    

Jetzt   können   wir   mit   gitarre_mc   arbeiten,   z.B.   indem   wir   festlegen   was   passieren   soll,   wenn  jemand  mit  der  Maus  darauf  klickt:   gitarre_mc.addEventListener(MouseEvent.CLICK, onGitarre) function onGitarre(e:MouseEvent):void { // hier wird die Reaktion auf dem Mausklick definiert }

Sound-Movies benutzen Was  also  soll  durch  einen  Klick  auf  die  Gitarre  ausgelöst  werden?  –  Der  entsprechende   Sound  soll  abgespielt  werden,  sie  haben  ihn  ja  bereits  in  die  Bibliothek  importiert.   Dummerweise  kann  man  Sounds  (genau  wie  andere  Symbole)  aber  nicht  direkt  aus  der   Bibliothek   heraus   benutzen,   auch   hier   muss   man   zunächst   eine   Instanz   in   die   Bühne   importieren.   Für   Sounds   (und   oftmals   auch   für   andere   Symbole)   macht   man   das   am   einfachsten   direkt   mit   Code.   Damit   das   funktioniert   braucht   es   allerdings   noch   eine   weitere   Vorbereitung:   Machen   sie   einen   Rechts-­‐Klick   auf   ein   Sound-­‐Symbol   in   der   Bibliothek   (z.B.   guitar.mp3)   und   öffnen   sie   „Eigenschaften   ...“.   Hier   gibt   es   ein   Register   „ActionScript“   ,   in   dem   sie   die   Tick-­‐Box   „Export   für   ActionScript“   aktivieren   müssen   –   damit   sollte   „Export   in   Bild   1“   ebenfalls   aktiv   sein.   Ausserdem   sollten   Klassennamen   immer   gross   geschrieben   sein,   also   nennen   sie   die   Klasse   z.B.   Gitarre.   Mit   diesen   Einstellungen  haben  sie  sozusagen  die  Erlaubnis  gegeben,  dass  dieser  Sound  vom  Code   in   die   Bühne   geholt   werden   darf   –   und   sie   haben   auch   den   Namen   festgelegt,   den   es   dafür  braucht.   So,   jetzt   sind   wir   bereit,   der   unsichtbaren   Gitarren-­‐Schaltfläche   zu   sagen,   was   sie   tun   soll:   var gitarre_snd:Sound = new Gitarre(); gitarre_snd.play(); Erklärung:  Die  erste  Zeile  erschafft  eine  neue  Variable  mit  dem  Namen  gitarre_snd  und   dem   Typ   Sound.   In   diese   Variable/Kiste   wird   eine   neue   Instanz   des   Bass-­‐Sounds   gespeichert   –   man   kann   also   jetzt   dieser   Instanz   sagen,   was   sie   tun   soll.   Ein   Beispiel   dafür   ist   die   folgende   Zeile,   die   der   eben   erschaffenen   Instanz   befiehlt,   ihren   Sound   abzuspielen.     Damit   es   keine   Verwirrungen   gibt,   sollten   sie   auch   für   den   Code   eine   eigene   Ebene   („actions“   oder   „code“)   erstellen.   Aktivieren   sie   dort   das   erste   Schlüsselbild   und   wechseln  sie  in  das  Fenster  Aktionen.  Hier  platzieren  sie  nun  diese  zwei  Zeilen  innerhalb   der  onGitarre-­‐Funktion  (s.  Code  weiter  oben),  dann  testen  sie  ihr  Werk.     Im   Moment   überdeckt   die   Schaltfläche   wahrscheinlich   noch   die   Gitarre   im   Orchesterbild,   aber   das   ist   einfach   zu   ändern.   Aktivieren   sie   die   Schaltfläche   (man   sollte   den  blauen  Rahmen  sehen  der  angibt,  dass  es  sich  um  ein  Symbol  handelt)  und  suchen   sie  im  Eigenschaftsfenster  nach  der  Eigenschaft  alpha  (=Transparenz).  Wenn  sie  diesen   Wert  auf  0%  setzen  ist  die  Schaltfläche  völlig  durchsichtig,  sie  sollte  aber  noch  genauso   funktionieren   wie   vorher   –   testen   sie   das.   Achtung:   durchsichtig   ist   nicht   dasselbe   wie   unsichtbar  (visible  =  false),  unsichtbare  Objekte  reagieren  nicht  auf  (Maus-­‐)  Ereignisse.    

Quelle:  http://www.learning-­‐how.to/flash-­‐einsteiger/Dateien-­‐importieren/content-­‐docs/02-­‐importieren.php,  angepasst  von  Nicolas  Ruh  

infcom@NKSA  

Flash:  Orchester  interaktiv  

Nicolas  Ruh    

Textfelder benutzen Jetzt   wollen   wir   noch   dafür   sorgen,   dass   der   Name   jedes   Instruments   angezeigt   wird,   wenn  sich  die  Maus  über  der  entsprechenden  (unsichtbaren)  Schaltfläche  befindet.  Um   Verwirrung  zu  vermeiden  sollten  sie  die  Instrumentennamen  wieder  auf  einer  eigenen   Ebene  platzieren,  am  besten  eine,  die  sich  unterhalb  der  Buttons-­‐Ebene  befindet.   Jetzt   braucht   es   zunächst   einmal   den   Namen,   sie   können   ihn   einfach   mit   dem   Textwerkzeug   erstellen   und   so   formatieren   (und   positionieren),   wie   es   ihrem   Geschmack   entspricht.   Genau   genommen   erstellen   sie   dabei   ein   Textfeld,   welches   den   Namen  darstellt  –  ganz  ähnlich  wie  ein  Symbol  eine  Form  oder  eine  Bitmap  als  Aussehen   haben   kann.   Dynamische   Textfelder 2  verhalten   sich   in   vielerlei   Hinsicht   genau   wie   Symbole,   daher   können   sie   sich   entscheiden,   ob   sie   im   Folgenden   mit   einem   dynamischen  Textfeld  weiterarbeiten,  oder  den  Text  zunächst  in  ein  Symbol  umwandeln   –   für   dieses   Beispiel   sollte   es   keinen   Unterschied   machen.   Also,   entweder   unter   Eigenschaften   „dynamisches   Textfeld“   einstellen,   oder   den   Text   in   ein   Symbol   umwandeln.  Wichtig  ist  in  beiden  Fällen,  dass  sie  wieder  einen  Instanznamen  vergeben   –  sagen  wir  gitarreLabel.       Jetzt  gibt  es  also  das  entsprechende  Label  und  wir  müssen  nur  noch  den  Code  schreiben,   der   dafür   sorgt,   dass   das   Label   nur   dann   gezeigt   wird,   wenn   sich   der   Mauszeiger   über   der  Schaltfläche  befindet.   Symbole  (oder  auch  Textfelder)  sichtbar  und  unsichtbar  zu  machen  ist  sehr  einfach,  es   muss   nur   die   Eigenschaft   visible   entweder   auf   true   (=wahr,   also   sichtbar)   oder   false   (=falsch,  also  nicht  sichtbar)  gesetzt  werden.  Und  weil  das  dann  passieren  soll,  wenn  der   Mauszeiger   die   (unsichtbare)   Schaltfläche   betritt   oder   verlässt,   braucht   es   die   beiden   Ereignisse  MOUSE_OVER  und  MOUSE_OUT,  die  genau  in  diesen  Fällen  ausgelöst  werden.   Der   folgende   Code   sorgt   also   dafür,   dass   der   Name   ausgeblendet   wird,   wenn   der   Mauszeiger  die  Gitarre  verlässt:   gitarre_mc.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut) function onMouseOut(e:MouseEvent):void { gitarreLabel.visible = false; } Ich   bin   sicher,   sie   können   sich   den   Code   für   das   Einblenden   des   Namens   inzwischen   zusammenreimen.   Hinweis:  eigentlich  sollen  die  Labels  ja  ganz  zu  Beginn  nicht  angezeigt  werden.  Um  das   einzustellen,  gibt  es  zwei  Möglichkeiten:  entweder  man  setzt  die  Eigenschaft  visible  im   Eigenschaftsfenster  auf  false,  oder  man  schreibt  die  Zeile   gitarreLabel.visible = false; in  den  Code,  z.B.  ganz  Oben.  Da  diese  Zeile  nicht  an  ein  Ereignis  gekoppelt  ist,  wird  sie   einfach  zu  Beginn  ausgeführt,  also  gleich  nach  dem  Laden  der  Flash-­‐Animation.  

                                                                                                                2  Statischer   Text   ist   dagegen   eher   wie   eine   Form,   d.h.   es   fehlen   die   Eigenschaften,   die   wir   zum   Programmieren  so  gut  gebrauchen  können.   Quelle:  http://www.learning-­‐how.to/flash-­‐einsteiger/Dateien-­‐importieren/content-­‐docs/02-­‐importieren.php,  angepasst  von  Nicolas  Ruh  

infcom@NKSA  

Flash:  Orchester  interaktiv  

Nicolas  Ruh    

Das restliche Orchester Zumindest  die  Gitarre  funktioniert  inzwischen  hoffentlich  wie  gewünscht,  jetzt  müssen   sie  diesen  Prozess  nur  noch  für  die  anderen  Instrumente  wiederholen.   Versuchen   sie   dabei,   immer   weniger   auf   die   Anleitung   zu   schauen   und   vergessen   sie   nicht   die   Vorbereitungsschritte,   d.h.   die   Vergabe   von   Instanznamen   und   die   Exporterlaubnis  für  die  Sounds.    

Qualität der Sounds anpassen Sehr  wahrscheinlich  klingen  die  Sounds  jetzt  noch  etwas  komisch.  Das  liegt  daran,  dass   Flash   versucht,   immer   möglichst   kleine   Dateien   zu   produzieren,   da   der   Haupteinsatzbereich   ja   das   Internet   ist.   Die   Qualität   kann   aber   natürlich   verbessert   werden:   Wählen  sie  Datei/Einstellungen  für  Veröffentlichungen...     Wechseln   sie   im   sich   nun   öffnenden   Fenster   auf   den   Reiter   Flash.   Unter   Audio-­‐Stream   kann  man  verschiedene  Einstellungen  für  die  Komprimierung  der  Sounds  wählen:   Klickt  man  auf  Einstellungen,  kann  man  die  Qualität  für  die  Sounds  genau  bestimmen.   Komprimierung:  mp3  würde  ich  lassen,  weil  wir  Musik-­‐Sounds  haben.   Vorverarbeitung:   Mono   reicht   für   unsere   Anwendung   alleweil   (Mono   braucht   naturgemäss  nur  halb  so  viel  Speicherplatz  wie  Stereo).   Bitrate:   Veränderungen   bei   dieser   Einstellung   bringen   in   der   Regel   die   meisten   Verbesserungen  in  der  Qualität  des  Sounds.  Probieren  sie  aus,  was  passiert,  wenn  sie  die   Zahl  schrittweise  erhöhen.   Qualität:  Hier  wählen  sie  für  unser  Beispiel  am  besten  Optimal  aus.   Hinweis:   Die   Einstellungen   haben   einen   sehr   direkten   Einfluss   auf   die   Grösse   der   swf-­‐ Datei.   Leider   ist   es   so,   dass   die   Datei   umso   grösser   wird,   je   besser   die   Sounds   sind.   Insbesondere  wenn  das  Ergebnis  im  Internet  zur  Verfügung  gestellt  werden  soll,  muss   man  hier  also  einen  guten  Kompromiss  zwischen  Grösse  und  Qualität  finden.   Diese   Export-­‐Einstellungen   betreffen   übrigens   nur   die   Grösse   der   .swf-­‐Datei,   also   des   fertigen  und  nicht  mehr  veränderbaren  Produkts  ihrer  Bemühungen.  In  der  .fla-­‐Datei,  in   der   sie   ihr   Projekt   bearbeiten,   bleiben   alle   Sounds   (und   auch   Bilder)   in   der   Qualität   erhalten,  in  der  sie  importiert  wurden.  

Erweiterungen Natürlich  kann  man  das  Orchester-­‐Projekt  jetzt  noch  auf  verschiedene  Arten  verbessern.   • • •

So   könnte   man   z.B.   dafür   sorgen,   dass   ein   Sound   erst   dann   erneut   gestartet   werden  kann,  wenn  er  zu  Ende  gespielt  hat  (s.  SnippetsAS3)   Auch  möglich  wäre,  die  einzelnen  Saite  des  Basses  mit  Tönen  zu  belegen,  die  man   einfach  durch  Zeigen  mit  der  Maus  abspielen  kann   Oder  denken  sie  sich  einfach  selbst  eine  Erweiterung  aus...  

 

Quelle:  http://www.learning-­‐how.to/flash-­‐einsteiger/Dateien-­‐importieren/content-­‐docs/02-­‐importieren.php,  angepasst  von  Nicolas  Ruh