vyuka:16._dynamicke_vytvareni_instanci_movieclipu_duplicatemovieclip_attachmovie_atd._nahravani_externich_movieclipu_loadmovie..._._vrstvy

Dynamické vytváření instancí MovieClipů (duplicateMovieClip, attachMovie atd.), nahrávání externích movieClipů (loadMovie...). Vrstvy

attachMovie

Příklad . v knihovně máme animovaný klip kolo_tween. Na stisk tlačítka budeme vytvářet jeho instance na scéně:

Pro přehrání obsahu potřebujete Adobe Flash Plugin.

K tomu využíváme metodu attachMovie, která má následující parametry:

  1. Název třídy (název klipu) v knihovně - zadáváme jako stringovou proměnnou (v daném konkrétním příkladě „kolo_tween“)
  2. Název instance - jako string - často ho tvoříme jako skládání řetězců: „název“ + NumerickáProměnná. V dabném příkladě to je „dummy“ + pocitadlo. Takže když se na začátku hodnota uložená v proměnné pocitadlo rovná 1, název první instance bude dummy1, když se zvětší o jedničku (inkrementačním příkazem pocitadlo++) bude název druhé instance dummy2 atd.
  3. Třetím příkazem je hloubka do které bude ukládána instance (tj. číslo vrstvy). Pro zjištění čísla nejbližší volné vrstvay (kde nebylo ještě nic uloženo a nemůžeme tedy nic přepsat) využíváme metodu getNextHighestDepth(). V daném konkrétním příkladě klipy ukládáme na plochu, tedy ne do tlačítka, a proto se ptáme na volnou vrstvu rodiče tlačítka, tj. na vrstvu kde je tlačítko uloženo, proto píšemethis._parent.getNextHighestDepth()
  4. Čtvrtým, nepovinným příkazem je inicializace objektu movieClip - inicializační příkaz uvádíme ve složených závorkách a v nich pak nastavujeme hodnoty vlastností jako název_vlastnosti : hodnotaVlastnosti - např. hodnota x-ové a ypsilonové souřadnice kterou vypočteme vynásobením obsahu proměnné pocitadlo a konstanty 70. Proto napíšeme: {_x:pocitadlo*70, _y:pocitadlo*70} - první instance se pak umístí na souřadnici _x=70, _y=7%, druhá _x=140, _y=140 atd.

Tlačítko se jmenuje attach_btn, instance ukládáme na plochu, kde je tlačítko uloženo, tedy na rodičovskou plochu, proto příkaz attachMovie píšeme na rodiče: this._parent.attachMovie(…).

Kód skriptu příkazu v našem příkladu v políčku jedna tedy bude:

pocitadlo = 1;
attach_btn.onRelease = function() {
	this._parent.attachMovie("kolo_tween", 
                                 "dummy"+pocitadlo, 
                                  this._parent.getNextHighestDepth(), 
                                  {_x:pocitadlo*70, _y:pocitadlo*70});
	pocitadlo++;
};

zdrojový text příkladu

duplicateMovieClip

je metoda, která umožní vytvořit kopii daného movieClipu. její syntaxe je:

  • názevInstanceMovieClipu.duplicateMovieClip(novéJménoKlipu,hloubks, nepivinnáInicializaceObjektu)

Tedy např.:

kosticka_c.duplicateMovieClip(„kopieKosticky_mc“, this.getNextHighestDepth(), [_x:10, _y:10} );

Nahrávání externích movieClipů (loadMovie)

Funkce loadMovie existuje jako samostatná funkce nebo metoda třídy movieClip. Její syntaxe je jednoduchá:

Chceme-li načítad tata z adresy url:

loadMovie(url,movieClipKamChcemeNahranýKlipUložit);

nebo

movieClip.loadMovie(url)

např.z adresy ld2000.cz/obr chceme nahrát obr0.jpg a levý horní roh načteného obrázku bude na instanci movieClipu r_mc, která nahražena obrázkem.

loadMovie("http://ld2000.cz/obr/obr0.jpg",this.r_mc);

Chceme-li odpojit nahraný movieClip zavoláme metodu rc.unloadMovie():

rc_mc.loadMovie("obr/obr1.jpg");
//upravíme šířku obrázku - zmenšíme ho na 50% šířky
rc_mc._width=50;
//nastavíme nedeformovatelnost obrázku, tj. stejné relativní zmenšení v x-ové i y-ové ose
rc_mc._yscale=pic_mc._xscale;
bt_mc.onRelease=function(){
//stiskneme-li tlačítko bt_mc obrázek se odstraní
	rc_mc.unloadMovie();
}

Nahrávání externích movieClipů pomocí třídy MovieClipLoader

Třída MovieClipLoader poskytuje mnohem více možností

příklad:

//vytvoříme instanci třídy movieClipLoader
var pic_mcl:MovieClipLoader = new MovieClipLoader();
 
//pomocí metody loadClip natáhneme obrázek
// který umístíme do vytvořeného prázdného movieClipu pic_mc
// na nejvyšší volné hloubce (abychom nic nepřepsali
pic_mcl.loadClip("http://ld2000.cz/obr/obr0.jpg",
                  this.createEmptyMovieClip("pic_mc", 
                  this.getNextHighestDepth()));
 
 
//vytvoříme instanci posluchače události
var listenerObject:Object = new Object();
 
//posluchač události bude poslouchat metodu onLoadInit
//a jakmile k ní dojde zavolá se funkce která nastaví, 
//obrázku vlastnost tlačítka - na kliknutí na obrázek se obrázek uvolní
listenerObject.onLoadInit = function(target) {
 target.onRelease = function() {
 unloadMovie(pic_mc);
 };
};
 
 
//Důležité - připoojíme posluchače události k instanci movieClipLoader
pic_mcl.addListener(listenerObject);
vyuka/16._dynamicke_vytvareni_instanci_movieclipu_duplicatemovieclip_attachmovie_atd._nahravani_externich_movieclipu_loadmovie..._._vrstvy.txt · Poslední úprava: 2007/06/07 13:03 autor: kofranek