. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .




 
 
SEGÉDLETEK ActionScript

Hogyan készítsünk tetszőleges Flash Player menüt
  feltöltve: 2005.04.10 | szerző: sgabe | olvasva: 16241 alkalommal

   
 

A segédlet során alaposan, lépésről lépésre átnézzük a ContextMenu és a ContextMenuItem osztályokat. Azok tulajdonságait, eljárásait, eseménykezelőit és használatukat. Minden lépésnél látható egy példa a megértés segítése végett. A csatolt forrás a legegyszerűbb példát mutatja be, amely alább is látható. Kattints jobb egérgombbal!


Flash Player menü áttekintése

A Flash Player rendelkezik egy beépített menüvel, ami a jobb egérgomb lenyomásával aktíválható. Alapértelmezetten itt érhetjük el a méretezéshez (Zoom In és Zoom Out) és a lejátszáshoz (Play és Loop) szükséges menüpontokat. Előfordulhat, hogy nem szeretnénk, ha a felhasználó ezekkel a lehetőségekkel élve megváltoztatná Flash mozink megjelenését, és így esetleg olyat is látna, amit mi nem akartunk megmutatni neki. A Macromedia gondoskodott ezen menüelemek egyszerű letiltásáról egy beépített menüpont segítségével, azonban ez csak a menüpontok elrejtésére szolgál. A Publish Settings > HTML fülön találhatjuk ezt az opciót.

A menü elrejtésével a "Settings" és az "About" menüpontok még mindig láthatóak. Ezek azok, amelyeket nem lehet elrejteni, ugyanis biztosítani kell a felhasználó számára a lejátszó beállításának lehetőségét (biztonság, kamera, mikrofon). Viszont ezen menüpontok mellett lehetőségünk van új menüpontok létrehozására. Például a Flash menü tökéletesen alkalmas a szerzői jogokkal kapcsolatos tudnivalók illetve az elérhetőségek elhelyezésére, így a Flash mozi bármely pontján fellelhetőek ezek a fontos információk.


ContextMenu osztály

A ContextMenu osztály futás idejű felügyeletet tesz lehetővé a Flash Player menüben, ami akkor jelenik meg, amikor a felhasználó jobb egérgombbal kattint a Flash Playeren. Használhatod a ContextMenu osztály eljárásait és tulajdonságait tetszőleges menüpontok létrehozására, a beépített menüpontok megjelenésének szabályozására (mint például a Zoom In és a Print) illetve menük másolatának létrehozására.

Ilyen ContextMenu objektumot hozzákapcsolhatsz egy meghatározott gombhoz, mozi kliphez, szövegmezőhöz, vagy akár egy egész mozihoz. Ehhez a Button, MovieClip vagy TextField osztályok menu tulajdonságát használhatod. Ebben a segédletben most nem térünk ki külön erre a tulajdonságra, majd talán egy folytatásban.

Egy új menüpont hozzáadásához létrehozunk egy ContextMenuItem objektumot, majd ezt hozzáfűzzük a ContextMenu.customItems tömbhöz. További információért olvasd el a ContextMenuItem osztály című részt.

A Flash Player 3 típusú menüt tartalmaz: az általános menü (amikor jobb egérgombbal kattint a felhasználó a Flash Playerben), a szerkesztés menü (amikor egy kijelölhető illetve szerkeszthető szövegmező fölött kattint a felhasználó), és egy hiba menü (amikor az SWF fájlt nem tudta megnyitni a Flash Player). Csak az általános és a szerkesztés menü módosítható a ContextMenu osztállyal.

Eljárás összefoglaló a ContextMenu osztályhoz
Eljárás Leírás
ContextMenu.copy()

Visszatér egy meghatározott menü másolatával.

ContextMenu.hideBuiltInItems() Elrejti a legtöbb beépített menüpontot.

Tulajdonság áttekintés a ContextMenu osztályhoz
Tulajdonság Leírás
ContextMenu.builtInItems Egy objektum a beépített menüpontokkal.
ContextMenu.customItems

Egy tömb a tetszőleges menüpontokkal.

Eseménykezelés a ContextMenu osztályhoz
Eseménykezelő Leírás
ContextMenu.onSelect

Lefut mielőtt a menü megjelenik.

Az osztály segítségével létrehozhatunk egy új ContextMenu objektumot. Megadhatunk egy azonosítót is egy eseménykezelőnek, amikor létrehozzuk az objektumot. A meghatározott függvény lefut, amikor a felhasználó meghívja a menüt, de még mielőtt a menü megjelenik. Ez lehetővé teszi az aktuális pozíció illetve az objektum típusának (mozi klip, szövegmező, gomb) megfelelő tartalmú menü létrehozását. További információért olvasd el a ContextMenuItem.onSelect című részt.

A következő példa elrejt minden beépített objektumot a Flash menüben, a "Settings" és az "About" kivételével, mert azok nem távolíthatóak el. Ez a legbiztosabb módszer a Flash menü elrejtésére a segédlet elején említett módszerrel szemben, ugyanis ez az SWF fájlban tárolódik, míg az előbbi a HTML kódban.

var newMenu:ContextMenu = new ContextMenu();

newMenu.hideBuiltInItems();

this.menu = newMenu;

Ebben a példában az általunk meghatározott menuHandler nevű eseménykezelő a showItem változó segítségével tiltja illetve engedélyezi egy tetszőleges menüpont megjelenítését. Ha a showItem értéke false, akkor a tetszőleges menüpont nem jelenik meg.

// a menüpont eltávolításához változtasd falsera

var showItem = true;

var my_cm:ContextMenu = new ContextMenu(menuHandler);

my_cm.customItems.push(new ContextMenuItem("Megtekint...", itemHandler));

function menuHandler(obj, menuObj) {

   if (showItem == false) {

      menuObj.customItems[0].enabled = false;

   } else {

      menuObj.customItems[0].enabled = true;

   }

}

function itemHandler(obj, item) {

   // itt helyezd el a kódod

   trace("Megtekintve...");

}

this.menu = my_cm;

ContextMenu.copy()
A ContextMenu.copy() eljárás létrehoz egy másolatot az általunk meghatározott ContextMenu objektumból. A létrehozott másolat rendelkezik az eredeti objektum minden tulajdonságával.

Az alábbi példa létrehoz egy másolatot a my_cm nevű ContextMenu objektumból. A beépített menüpontok el vannak rejtve és van egy tetszőleges menüpont is "Mentés..." névvel. A script létrehozza a my_cm másolatát, majd hozzáadja a clone_cm változóhoz, ami az eredeti menü minden tulajdonságát örökli.

var my_cm:ContextMenu = new ContextMenu();

my_cm.hideBuiltInItems();

var menuItem_cmi:ContextMenuItem = new ContextMenuItem("Mentés...", saveHandler);

my_cm.customItems.push(menuItem_cmi);

function saveHandler(obj, menuItem) {

  // tetszőleges függvény

  trace("Mentve...");

}

clone_cm = my_cm.copy();

this.menu = my_cm;

for (var i in clone_cm.customItems) {

  trace("clone_cm-> "+clone_cm.customItems[i].caption);

}

for (var i in my_cm.customItems) {

  trace("my_cm-> "+my_cm.customItems[i].caption);

}

ContextMenu.hideBuiltInItems()
A ContextMenu.hideBuiltInItems() eljárás elrejt minden beépített menüpontot a meghatározott általános ContextMenu objektumban, kivéve a "Settings" menüpontot, a szerkesztés és a hiba menük elemeire nincsen hatással. Ha fut a Flash Debug Player, akkor látható a "Debugger" menüpont is, habár le van tiltva azoknál az SWF fájloknál, ahol nincs engedélyezve a hibakeresés. Az eljárás úgy is működik, hogy egy általunk kiválasztott beépített menüponton kívül minden másikat elrejtünk, és csak azt tesszük láthatóvá, ami szerintünk szükséges, ahogy az alább is látható.

Az alábbi példa létrehoz egy my_cm nevű ContextMenu objektumot, amelyben a beépített menüpontok rejtettek a "Print" kivételével.

var my_cm:ContextMenu = new ContextMenu();

my_cm.hideBuiltInItems();

my_cm.builtInItems.print = true;

this.menu = my_cm;

ContextMenu.BuiltInItems
A ContextMenu.BuiltInItems objektum a következő tulajdonságokkal rendelkezik: save, zoom, quality, play, loop, rewind, forward_back és print. Ezen változók false beállításával távolíthatjuk el a megfelelő menüpontokat a meghatározott ContextMenu objektumból. Az alapbeállítás mindegyik esetében true.

Az alábbi példában a beépített "Quality" és "Print" menüpontokat eltávolítjuk a my_cm nevű ContextMenu objektumból.

var my_cm:ContextMenu = new ContextMenu ();

my_cm.builtInItems.quality=false;

my_cm.builtInItems.print=false;

this.menu = my_cm;

ContextMenu.customItems
A ContextMenu.customItems egy tömb a ContextMenuItem objektumokkal, tehát a tömb minden objektuma egy általunk definiált menüpont. Ezt a tulajdonságot használjuk tetszőleges menüpontok hozzáadására, eltávolítására illetve módosítására.

Új menüpont hozzáadásához először létre kell hozni egy új ContextMenuItem objektumot, majd ezt hozzá kell adnunk a menu_mc.customItems tömbhöz. További információért olvasd el a ContextMenuItem osztály című részt.

Az alábbi példában létrehozunk egy új tetszőleges menüpontot menuItem_cm névvel, "E-mail küldés" felirattal és egy emailHandler nevű eseménykezelővel. A customItems tömb használatával hozzáadjuk a my_cm nevű ContextMenu objektumhoz. Végül az új menüt hozzákapcsoljuk az email_mc nevű mozi kliphez.

var my_cm:ContextMenu = new ContextMenu();

var menuItem_cmi:ContextMenuItem = new ContextMenuItem("E-mail küldés", emailHandler);

my_cm.customItems.push(menuItem_cmi);

email_mc.menu = my_cm;

function emailHandler() {

   trace("E-mail küldés...");

}

ContextMenu.onSelect
A ContextMenu.onSelect eseménykezelő akkor fut le, amikor a felhasználó meghívja a Flash Player menüt, de még mielőtt a menü megjelenne. Ez lehetővé teszi, hogy tetszőleges tartalmú menüt jeleníts meg az aktuális helyzetnek megfelelően, attól függően, hogy milyen objektumon lett meghívva a Flash Player menü.

A következő példa meghatározza, hogy milyen típusú objektumon lett meghívva a Flash Player menü.

my_cm = new ContextMenu();

function menuHandler(obj:Object, menu:ContextMenu) {

   if(obj instanceof MovieClip) {

      trace("Moziklip: " + obj);

   }

   if(obj instanceof TextField) {

      trace("Szövegmező: " + obj);

   }

   if(obj instanceof Button) {

      trace("Gomb: " + obj);

   }

}

my_cm.onSelect = menuHandler;

my_mc.menu = my_cm;

my_btn.menu = my_cm;

my_text.menu = my_cm;
 
   
 
 

© Devnet.hu. A segédletek semmilyen formában nem másolhatók, publikálhatók a Devnet.hu és a szerzők közös írásos engedélye nélkül.
 
. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .