Tartalomjegyzék Elõszó xv Bevezetés xix Kezdõk is jöhetnek................................................ xix Útmutatás a szakértõktõl............................................ xx Mit tartalmaz a könyv?.............................................. xx Mit nem tartalmaz a könyv?......................................... xxi Függetlenség a fejlesztõkörnyezettõl.................................. xxi Az ActionScript áttekintése.......................................... xxi A nyelv magja.................................................... xxii Futásidejû Flash-ügyfelek.......................................... xxiii Futásidejû API-k................................................. xxiv Összetevõk..................................................... xxiv A Flash fájlformátum (SWF)......................................... xxv ActionScript-fejlesztõeszközök...................................... xxv A könyv példafájljai.............................................. xxvi A példakódok használata.......................................... xxvi A könyvben használt jelölések..................................... xxvii Elérhetõségeink................................................. xxix Safari Enabled.................................................. xxix Köszönetnyilvánítás xxxi A szerzõrõl xxxv
vi ActionScript 3.0 a gyakorlatban I. rész ActionScript az alapok 1. fejezet Alapfogalmak A programozás segédeszközei........................................ 3 Futásidejû Flash környezetek......................................... 4 Fordítás........................................................... 4 Valósidejû fordítás.................................................. 5 Gyors ismétlés..................................................... 5 Osztályok és objektumok............................................ 6 Programkészítés.................................................... 7 Csomagok........................................................ 8 Osztály meghatározása............................................. 10 Pillanatkép virtuális állatkertünkrõl.................................... 12 Létrehozófüggvények.............................................. 13 Objektumok létrehozása............................................ 15 Változók és értékek................................................ 18 Konstruktorparaméterek és konstruktorargumentumok................... 22 Kifejezések....................................................... 24 Értékadás változónak másik változóval................................. 25 Példánytagfüggvények.............................................. 28 Tagfüggvények paraméterei......................................... 33 Tagfüggvények visszatérési értékei.................................... 35 Tagok és tulajdonságok............................................. 39 Virtuális állatkertünk áttekintése...................................... 39 Egy kis pihenõ...................................................... 40 2. fejezet Feltételvizsgálat és ciklusok Feltételes utasítások................................................ 41 A switch utasítás................................................... 45 Ciklusok......................................................... 46 Logikai mûveletek................................................. 53 Osztályok és objektumok újratöltve.................................. 57 3. fejezet Példánytagfüggvények újratöltve A this kulcsszó elhagyása............................................ 60 Kötött tagfüggvények............................................... 62 Az objektumok állapotának kiolvasása és módosítása példánytagfüggvényekkel 63 Elérõ és beállító tagfüggvények....................................... 67 Ismeretlen számú paraméter kezelése................................. 70 Következik: Osztályszintû adatok és mûveletek.......................... 71 4. fejezet Statikus változók és tagfüggvények Statikus változók.................................................. 73 Állandók......................................................... 76 Statikus tagfüggvények............................................. 78
ActionScript 3.0 a gyakorlatban vii Class objektumok.................................................. 80 A C++ és a Java szóhasználata........................................ 81 Irány a függvények világa!........................................... 81 5. fejezet Függvények Csomagszintû függvények........................................... 84 Beágyazott függvények............................................. 86 Forrásfájlszintû függvények.......................................... 87 Meghatározások elérése a függvények belsejébõl........................ 88 A függvény mint érték.............................................. 88 Függvényliterálok................................................. 89 Önhívó függvények................................................ 91 Függvények használata virtuális állatkertünkben......................... 92 Vissza az osztályokhoz!............................................. 96 6. fejezet Öröklés Bevezetés az öröklésbe............................................. 97 A példánytagfüggvények felülírása................................... 100 A gyermekosztályok konstruktorai................................... 104 Nem bõvíthetõ osztályok és felülírhatatlan tagfüggvények................ 108 A beépített osztályok gyermekei..................................... 109 Az öröklés elmélete............................................... 109 Csak semmi elvontság!............................................. 116 Öröklés a virtuális állatkertben...................................... 117 A virtuális állatkert kódjának áttekintése............................... 121 Futás!.......................................................... 124 7. fejezet Fordítás és futtatás Fordítás a Flash fejlesztõkörnyezettel................................. 125 Fordítás a Flex Builder 2-vel........................................ 126 Fordítás az mxmlc-vel............................................. 127 A fordítók korlátozásai............................................. 128 A fordítási folyamat és az osztályelérési útvonal......................... 129 Egyszerû és szigorú fordítás......................................... 130 A mókának még nincs vége!........................................ 131 8. fejezet Adattípusok és típusellenõrzés Adattípusok és típusjelzések........................................ 134 Típusmeghatározás nélküli változók, paraméterek,..................... 137 visszatérési értékek és kifejezések.................................... 137 A szigorú fordítási mód három különleges esete........................ 138 Hiányzó típusjelzések............................................. 139 Hivatkozási hibák felismerése a fordítás során.......................... 140 Típusátalakítás................................................... 141
viii ActionScript 3.0 a gyakorlatban Átalakítás egyszerû típusokká....................................... 144 Változók alapértelmezett értékei..................................... 147 A null és az undefined érték........................................ 148 És ismét az adattípusok.............................................. 152 9. fejezet Felületek Ahol jól jön egy felület.............................................. 153 Felületek és több adattípushoz tartozó osztályok........................ 155 A felületek használata............................................. 156 Több adattípus használata egy újabb példa........................... 159 További alapok.................................................... 165 10. fejezet Utasítások és mûveletek Utasítások....................................................... 167 Mûveletek....................................................... 169 Következik: listák minden mennyiségben!............................. 182 11. fejezet Tömbök Mi is az a tömb?.................................................. 183 A tömb anatómiája................................................ 184 Tömbök létrehozása.............................................. 184 A tömbelemek elérése............................................. 186 A tömb méretének meghatározása................................... 187 Újabb tömbelemek beillesztése...................................... 189 Tömbök elemeinek eltávolítása...................................... 193 Tömbök tartalmának vizsgálata a tostring tagfüggvénnyel................ 195 Többdimenziós tömbök............................................ 196 Vár az események világa!........................................... 196 12. fejezet Események és eseménykezelés Az eseményekrõl................................................. 197 A célobjektum elérése............................................. 204 Az eseményfigyelõt bejegyzõ objektum elérése......................... 206 Az események alapértelmezett viselkedésének felülbírálása............... 207 Az eseményfigyelõk elsõbbsége..................................... 209 Az eseményfigyelõk és a memóriakezelés............................. 210 Egyéni események................................................ 215 Típuskezelési problémák az események világában...................... 227 Eseménykezelés biztonsági határokon át.............................. 229 Hogyan tovább?.................................................. 233 13. fejezet Kivételek és hibakezelés A kivételkezelési ciklus............................................ 235 Többféle kivétel kezelése.......................................... 238
ActionScript 3.0 a gyakorlatban ix A kivételek továbbterjedése......................................... 246 A finally blokk................................................... 250 Beágyazott kivételek.............................................. 253 A program futásának vezérlése a try/catch/finally utasításban............. 257 Beépített kivételek kezelése........................................ 259 További háttérmunka............................................... 260 14. fejezet Szemétgyûjtés Megérett a szemétgyûjtésre?......................................... 261 Fokozatos megjelölés és takarítás.................................... 264 Objektumok szándékos megsemmisítése.............................. 264 Objektumok kikapcsolása.......................................... 266 Szemétgyûjtési példaprogram....................................... 268 Tovább az ActionScript távoli tájaira.................................. 269 15. fejezet Dinamikus ActionScript Dinamikus példányváltozók........................................ 272 Viselkedések dinamikus alkalmazása................................. 276 Változók és tagfüggvények dinamikus hivatkozásai..................... 277 Keresõtáblák létrehozása dinamikus példányváltozókkal................. 278 Objektumok létrehozása függvényekkel............................... 281 Osztályok bõvítése prototípusobjektumokkal.......................... 282 A prototípuslánc.................................................. 283 Elõttünk a hatókörök!............................................. 285 16. fejezet A hatókör Globális hatókör.................................................. 288 Osztályszintû hatókör............................................. 289 A statikus tagfüggvények hatóköre................................... 290 A példánytagfüggvények hatóköre................................... 290 A függvények hatóköre............................................ 291 A hatókörök áttekintése............................................ 292 Hatókörök belülrõl.............................................. 292 A hatókörlánc bõvítése a with utasítással.............................. 294 Várnak a névterek!................................................ 294 17. fejezet Névterek Kisszótár a névterekhez............................................ 295 Az ActionScript névterei............................................ 296 Névterek létrehozása.............................................. 297 Változók és tagfüggvények meghatározásainak minõsítése névterekkel..... 300 Felhasználói névtérjellemzõk: csak az osztályok legfelsõ szintjén........... 301 Minõsített azonosítók.............................................. 303 Névterek a gyakorlatban egy mûködõ példaprogram................... 304
x ActionScript 3.0 a gyakorlatban A névterek elérhetõsége........................................... 307 A minõsített azonosítók láthatósága.................................. 310 Minõsített azonosítók összehasonlítása................................ 311 Névtérértékek hozzárendelése és átadása.............................. 312 Nyílt névterek és a use namespace direktíva........................... 323 Névterek elérésszabályozó módosítók szerepében...................... 326 Példák a névterek alkalmazására..................................... 329 Az ActionScript alapjai közeleg a végkifejlet.......................... 340 18. fejezet Az XML és az E4X Az XML mint adathierarchia......................................... 341 XML-adatok megjelenítése az E4X-ben................................ 343 XML-adatok létrehozása az E4X segítségével........................... 345 XML-adatok elérése............................................... 346 Szülõcsomópontok elérése......................................... 352 XML-adatok feldolgozása a for-each-in és a for-in utasításokkal............ 364 Leszármazottak elérése............................................ 366 XML-adatok szûrése............................................... 370 XML-fák bejárása................................................. 372 XML-tartalom létrehozása és módosítása.............................. 373 XML-adatok betöltése............................................. 382 XML-névterek használata........................................... 384 XML és XMLList objektumok karakterlánccá alakítása.................... 389 Az egyenlõség fogalma az E4X-ben.................................. 392 További tanulnivalók.............................................. 395 19. fejezet A Flash Player biztonsági korlátozásai Ami a fejezetbõl kimaradt............................................ 398 Helyi birodalom, távoli birodalom és távoli tartományok................. 398 Biztonsági homokozótípusok....................................... 399 Biztonsági kérdésekben ne általánosítsunk!............................ 401 A tartalom betöltése, a tartalom elérése adatként, a kereszt-parancsvégrehajtás 401 és az adatbetöltés mûveleteinek biztonsági korlátozásai.................. 401 A csatolók biztonsága............................................. 407 Biztonsági esettanulmányok........................................ 408 A helyi biztonsági homokozótípus kiválasztása......................... 410 Terjesztõi engedélyek (eljárásfájlok).................................. 414 Létrehozói engedélyek (allowdomain()).............................. 428 Két gyakori biztonsági kérdés a fejlesztésben........................... 436 Elõttünk a II. rész!................................................ 437
ActionScript 3.0 a gyakorlatban xi II. rész Megjelenítés és interaktivitás 20. fejezet A megjelenítési felület és a megjelenítési lista A megjelenítési felület áttekintése.................................... 442 A megjelenítési lista............................................... 445 Tárolóesemények................................................. 469 Egyéni grafikus osztályok.......................................... 480 Ússzunk az eseményfolyammal!..................................... 482 21. fejezet Események és megjelenítési hierarchiák Hierarchikus eseményindítás........................................ 483 Az eseményindítás szakaszai........................................ 484 Az eseményfigyelõk és az eseményfolyam............................. 485 A kód központosítása az eseményfolyam segítségével................... 492 Az eseményszakasz meghatározása.................................. 495 Az adott objektumra, illetve annak leszármazottaira irányuló.............. 497 események megkülönböztetése..................................... 497 Esemény megállítása.............................................. 498 Az események elsõbbsége és az eseményfolyam........................ 502 A megjelenítési hierarchia változásai és az eseményfolyam................ 503 Egyéni események és az eseményfolyam.............................. 505 Következik: bemeneti események.................................... 510 22. fejezet Interaktivitás Egéresemények.................................................. 512 Fókuszesemények................................................ 527 Bemeneti billentyûesemények...................................... 533 Szövegesemények................................................ 542 Flash Player-szintû bemeneti események.............................. 556 A programból a képernyõre........................................ 562 23. fejezet Képernyõfrissítés Ütemezett képernyõfrissítés........................................ 563 Esemény utáni képernyõfrissítés..................................... 572 Terület újrarajzolása............................................... 575 Lendüljünk mozgásba!............................................. 584 24. fejezet Programozott animáció Ciklusok nélkül.................................................. 585 Animáció az ENTER_FRAME esemény segítségével...................... 586 Animáció a TimerEvent.TIMER esemény segítségével.................... 591
xii ActionScript 3.0 a gyakorlatban Timer vagy Event.ENTER_FRAME mikor melyiket használjuk?............ 597 Egy általános animátor............................................. 598 Sebesség alapú animáció........................................... 601 Következik: Körvonalak és kitöltések................................. 602 25. fejezet Rajzolás vektorokkal A Graphics osztály tagfüggvényeinek áttekintése........................ 603 Vonalrajzolás.................................................... 604 Görberajzolás.................................................... 607 Alakzatrajzolás................................................... 608 A vektoros tartalom eltávolítása...................................... 610 Példa: Objektumközpontú alakzattár................................. 611 A vonalaktól a képpontokig........................................ 620 26. fejezet Bitképprogramozás A BitmapData és Bitmap osztályok................................... 621 A képpontok színértéke............................................ 622 Új bitkép létrehozása.............................................. 626 Külsõ bitkép betöltése............................................. 628 Bitképek vizsgálata............................................... 630 Bitkép módosítása................................................ 636 Grafika másolása BitmapData objektumba............................. 643 Szûrõk és különleges hatások alkalmazása............................. 656 A bitképek által lefoglalt memória felszabadítása........................ 664 Szó, szó, szó................................................... 664 27. fejezet Szövegmegjelenítés és szövegbevitel Szöveg létrehozása és megjelenítése.................................. 668 Szövegmezõ tartalmának módosítása................................. 674 Betûtípusok és szövegleképezés..................................... 704 Hiányzó betûtípusok és írásjegyek................................... 716 A betûtípusok elérhetõségének megállapítása.......................... 717 Az írásjegyek elérhetõségének megállapítása........................... 719 Beágyazott szöveg leképezése...................................... 719 Szövegbevitel szövegmezõn keresztül................................ 723 A szövegmezõk és a Flash fejlesztõkörnyezet.......................... 727 Betöltés folyamatban Kérem, várjon.............................. 728 28. fejezet Külsõ megjelenítési elemek betöltése Megjelenítési elemek betöltése futásidõben a Loader osztály segítségével.... 730 A futásidõben betöltött elemek fordítási idejû típusellenõrzése............. 748 Elemek elérése több képkockás.swf fájlokban......................... 756 A futásidõben betöltött elemek példányosítása......................... 759
ActionScript 3.0 a gyakorlatban xiii Megjelenítési elemek betöltése futásidõben a Socket osztály segítségével.... 762 A futásidõben betöltött.swf elemek eltávolítása......................... 771 Megjelenítési elemek beágyazása fordításkor........................... 772 Jöjjön a III. rész!.................................................. 783 III. rész Alkalmazott ActionScript 29. fejezet Az ActionScript és a Flash fejlesztõkörnyezet A Flash dokumentum.............................................. 787 Idõszalag és képkockák............................................ 788 Kulcskockák és normál képkockák................................... 790 Az idõszalag programozása......................................... 791 A dokumentumosztály............................................. 793 Szimbólumok és példányok........................................ 796 A filmklipszimbólumok kapcsolt osztályai............................. 798 Saját kezûleg létrehozott szimbólumpéldányok elérése................... 802 Saját kezûleg létrehozott szöveg elérése............................... 807 Az idõszalag vezérlése programkód segítségével........................ 808 A Flash szerkesztõszimbólumainak példányosítása az ActionScript segítségével 809 Programból létrehozott megjelenítési objektumok példánynevei........... 810 Több szimbólum kapcsolása egyetlen õsosztályhoz..................... 811 Kapcsolt osztályok helyett összetétel................................. 813 Osztályok elõzetes betöltése........................................ 815 Következik: A Flex keretrendszer használata........................... 817 30. fejezet Egy egyszerû MXML alkalmazás Az általános megközelítés.......................................... 819 Egy valódi UI összetevõ példa..................................... 821 A kód megosztása másokkal........................................ 823 31. fejezet Osztálykönyvtárak terjesztése Az osztályok forrásfájljainak megosztása.............................. 826 Osztálykönyvtár terjesztése.swc fájlként.............................. 827 Osztálykönyvtár terjesztése.swf fájlként............................... 831 Tényleg vége?.................................................... 837 Függelék A végsõ virtuális állatkert 839 Tárgymutató 855 Zárszó 875