Martin Hozφk
hozikm@seznam.cz
ICQ: 323756613

HTML 4.0 validnφ
|
Vlastnφ kurzor a duplikace MC
V tΘto kapitole jsem se rozhodl spojit 2 p°φklady dohromady, proto₧e jsou
velmi jednoduchΘ a krßtkΘ.
1. Vlastnφ kurzor
Poslednφ dobou se v mojφ poÜt∞ mno₧φ dotazy na vytvo°enφ vlastnφho
kurzoru. Dnes vßm vysv∞tlφm jeden zp∙sob, jak ho vytvo°it. Tento postup
nenahrazuje ani tak kurzor samotn², ale namφsto n∞j zobrazφ urΦit² MovieClip
Tak₧e nejprve si vytvo°φme MovieClip, kter² m∙₧e obsahovat jak
statickou, tak i pohyblivou grafiku. Je velmi d∙le₧itΘ dbßt na sprßvnou
pozici st°edu (symbol "+")
Tento MovieClip vlo₧φme na plochu a definujeme mu nßsledujφcφ p°φkazy:
onClipEvent (load) {
Mouse.hide();
startDrag(this, true);
}
onClipEvent (mouseMove) {
updateAfterEvent();
}
P°edchozφ p°φkazy znamenajφ, ₧e po naΦtenφ animace se nejprve skryje
kurzor myÜi (Mouse.hide()), jinak by toti₧ byl vid∞t spolu s
MovieClipem
A nßsledn∞ se zahßjφ ta₧enφ naÜeho MC (this=tento), p°iΦem₧ je je pozice
kurzoru uzamΦena do st°edu MC (Lock mouse to center)
Pokud bychom to nechali takto, aktualizovala by se pozice v zßvislosti na
framerate, co₧ by vy₧adovalo pou₧itφ vysokΘ framerate (18-25). My vÜak
pou₧ijeme p°φkaz updateAfterEvent();, kter² p°i jakΘmkoliv
pohybu myÜi (mouseMove) aktualizuje prom∞nnΘ _xmouse a _ymouse,
charakterizujφcφ pozici myÜi v animaci. Tφm pßdem bude pohyb kurzoru zcela
plynul² a nezßvisl² na rychlosti p°ehrßvßnφ.
To je vÜe. Jen m∞jte na pam∞ti, ₧e kurzor by nem∞l u₧ivatele ruÜit, a
u₧ v∙bec ne otravovat.
2. Duplikace MovieClipu
Jak jist∞ vφte z kapitoly "Knihovna",
je mo₧nΘ vytvß°et velkΘ mno₧stvφ instancφ symbol∙ umφst∞n²ch v knihovn∞,
ani₧ by se zv∞tÜila velikost animace a t∞mto instancφm m∞nit °adu atribut∙.
Podobnou operaci s MovieClipem umo₧≥uje p°φkaz duplicateMovieClip().
Asi bude nejlepÜφ, kdy₧ vßm jeho funkci p°edvedu na nßsledujφcφm p°φkladu:
╪ekn∞me, ₧e mßme na ploÜe umφst∞n MC s nßzvem "prvni"
Dßle do 1. snφmku animace umφstφme nßsledujφcφ p°φkaz:
duplicateMovieClip("prvni", "druhy", 1);
Tento p°φkaz vytvo°φ kopii MC "prvni" s nßzvem "druhy". Ta jedniΦka na
konci je tzv. Hloubka (Depth). Toto Φφslo urΦuje pozici MC v ose Z.
PoΦßteΦnφ MC mß depth=0 a tφm pßdem bude jeho duplikßt "druhy" vid∞t nad
nφm. (Pokud by tam mφsto 1 bylo -1, tak by to bylo opaΦn∞)
Efekt p°edchozφho p°φkazu by byl prakticky nulov² (kopie by byla
identickß a na stejnΘm mφst∞). Proto pou₧ijeme p°φkaz setProperty().
Nap°φklad:
setProperty("druhy", _alpha, 50);
setProperty("druhy", _rotation, 15);
setProperty("druhy", _x, 130);
setProperty("druhy", _y, -50);
tyto p°φkazy nastavφ duplikßtu 50% pr∙hlednost (alpha), otoΦφ ho o 15░
(rotation) a definujφ mu pozici _x=130 a _y=-50
Tak₧e u₧ vφte, jak duplikace MC funguje a te∩ si vytvo°φme troÜku
slo₧it∞jÜφ p°φklad. Pokud bychom cht∞li vytvo°it vetÜφ mno₧stvφ kopiφ s
podobn²mi vlastnostmi, bylo by psanφ p°φkaz∙ docela zdlouhavΘ. My tedy
pou₧ijeme smyΦku.
nejprve si tedy, jako v p°edchozφm p°φpad∞, vytvo°φme MC, umφstφme jej
na plochu a pojmenujeme pro zm∞nu "bod"
Tomuto MC definujeme nßsledujφcφ p°φkazy:
onClipEvent (load) {
_root.xpos = _x;
_root.ypos = _y;
}
Tento zßpis znamenß, ₧e po naΦtenφ animace se do prom∞nn²ch xpos
a ypos zapφÜe poΦßteΦnφ pozice MC "bod" (_x a _y).
Od tΘto pozice se pak budou umφs¥ovat kopie.
Nynφ m∙₧eme do 1. snφmku definovat nßsledujφcφ p°φkazy (v ukßzce jsem
je, kv∙li nßzornosti, definoval tlaΦφtku)
var i = 1;
while (i<=450) {
duplicateMovieClip("_root.bod", "bod"+i, i);
setProperty("bod"+i, _x, _root.xpos + i);
setProperty("bod"+i, _y, _root.ypos - Math.tan(i/20)*10);
i++;
}
Zde je pou₧ita nejjednoduÜÜφ smyΦka (While). Na samΘm zaΦßtku je
definovßna lokßlnφ prom∞nnß i=1.
Nßsleduje smyΦka, kterß vykonßvß p°φkazy dokud platφ, ₧e i <= 450
(menÜφ nebo rovno).
Je tedy duplikovßn MC ("bod") a jeho kopii je p°i°azen nßzev
"bod"+i.
Nßsleduje nastavenφ vlastnostφ nov∞ vzniklΘho MC. V naÜem
p°φpad∞ se definuje x sou°adnice jako pozice poΦßteΦnφho MC + i.
Dßle je urΦena y sou°adnice, tentokrßt pomocφ goniometrickΘ funkce
tangens (Math.tan).
┌pln∞ nakonec se k prom∞nnΘ i p°iΦte jedniΦka (++)
Pro nßzornost - 5. cyklus by se mohl nahradit tφmto zßpisem:
duplicateMovieClip("_root.bod", "bod5", 5);
setProperty("bod5", _x, _root.xpos + 5);
setProperty("bod5", _y, _root.ypos - Math.tan(0.25)*10);
Pro Ü¥ouraly: v²raz uvnit° funkce tangens je pod∞len 20
(zv∞tÜenφ periody) a celß funkce je vynßsobena 10 (zv∞tÜenφ amplitudy).

prohlΘdnout

stßhnout [24 kB]
|