Martin Hozφk |
Objekty - ·vodObjekt je element slou₧φcφ k zφskßnφ n∞jak²ch informacφ nebo k nastavenφ n∞jak²ch vlastnostφ. Nap°φklad objekt Date() obsahuje informace o aktußlnφm Φase a datumu. Drtivß v∞tÜina p°ednastaven²ch objekt∙ ve Flashi mß svΘ metody (methods). Jsou to vlastnφ funkce definovanΘ objektu.Nap°φklad metoda getMonth() vytßhne z objektu Date() Φφslo aktußlnφho m∞sφce. Metoda getMilisecond() zase zφskß poΦet milisekund, atd... V∞tÜina objekt∙ mß sv∙j konstruktor. To je funkce, kterß vytvo°φ objekt. M∙₧eme si to p°edstavit jako funkci, kterß vytvo°φ instanci p°ednastavenΘho objektu v naÜφ animaci. Abychom tedy mohli pracovat s naÜφm objektem Date(), je nutnΘ jej nejprve vytvo°it pomocφ konstruktoru new: datum = new Date(); hodiny = datum.getHours(); minuty = datum.getMinutes(); sekundy = datum.getSeconds(); milisekundy = datum.getMiliseconds(); Zde je tedy vytvo°en objekt typu Date() s nßzvem "datum". Dßle jsou definovßny prom∞nnΘ "hodiny", "minuty",...atd jako metody objektu "datum". Krom∞ metod m∙₧e mφt objekt i vlastnosti. Nap°φklad objekt Sound() zvuk = new Sound(); zvuk.attachSound("potlesk"); zvuk.start(); delkazvuku = zvuk.duration; Zde je vytvo°en objekt Sound() s nßzvem "zvuk" a je mu p°id∞len zvuk z knihovny s nßzvem "potlesk". Nßsleduje metoda start() kterß spustφ zvuk. Nakonec je vlastnost duration (dΘlka) ulo₧ena do prom∞nnΘ "delkazvuku".
╪φkal jsem, ₧e v∞tÜina objekt∙ mß konstruktor. N∞kterΘ ho ale nemajφ. B²vajφ to v∞tÜinou "hmotnΘ" objekty (Button, MovieClip, TextField,...). Tyto objekty jsou ji₧ vlastn∞ vytvo°eny tφm, ₧e je umφstφme na scΘnu a pojmenujeme. Naopak imaginßrnφ objekty (Date, Sound, Color, Array) existujφ jen v k≤dovΘ podob∞ a je tedy nutnΘ je vytvo°it pomocφ konstruktoru. Nap°φklad objekt Button tlacitko1.enabled = false; Tento zßpis edituje vlastnost enabled na nepravda. TlaΦφtko s nßzvem "tlacitko1" tedy nep∙jde zmßΦknout. PovÜimn∞te si, ₧e nenφ nutnΘ pou₧φt konstruktor - tlaΦφtko u₧ existuje na scΘn∞. Vlastnφ objektKrom∞ p°eddefinovan²ch objekt∙ je mo₧nΘ vytvo°it i vlastnφ objekt. Nejprve je nutnΘ vytvo°it Konstruktor objektu. Nenφ to nic vφc, ne₧ obyΦejnß funkce, jejφ₧ nßzev je shodn² s nßzvem objektu, kter² bude vytvß°et, tak₧e nap°φklad: function Kruh() { this.addProperty("polomer",getRadius, setRadius); function getRadius() { return radius; } function setRadius(hodnota) { radius = hodnota; } this.getArea = function() { area = Math.PI * radius * radius; return area; } } Zde je definovßna konstrukΦnφ funkce Kruh(). Uvnit° je nejprve definovßna vlastnost "polomer". K tΘto vlastnosti musφ b²t p°ipojeny 2 funkce. Jedna (getRadius) zφskßvß hodnotu vlastnosti a druhß (setRadius) vlastnost nastavuje. Funkce getRadius() pouze vrßtφ hodnotu prom∞nnΘ "radius". Funkce setRadius() nastavφ hodnotu prom∞nnΘ "radius" na hodnotu argumentu "hodnota".
Nakonec jeÜt∞ definujeme metodu, kterß bude vracet obsah kruhu. Metodu m∙₧ete definovat pomocφ p°φkazu Actions->User-Defined Function->method
Uvnit° metody je definovßna prom∞nnß area jako obsah kruhu (PI*radius2).
Hodnotu tΘto prom∞nnΘ potom metoda vracφ (return) Mßme tedy vytvo°en² konstruktor a nynφ m∙₧eme vytvo°it samotn² objekt: prvni = new Kruh(); prvni.polomer = 35; vysledek = prvni.getArea(); V prvnφm °ßdku je vytvo°en objekt Kruh() s nßzvem "prvni"
Ve druhΘm °ßdku je definovßna vlastnost "polomer" jako 35. Ve
t°etφm °ßdku je deklarovßna prom∞nnß "v²sledek" jako v²stup metody
getArea().
Prom∞nnß "v²sledek" bude rovna 3848,45
pozn.: Metodu je takΘ mo₧nΘ definovat vn∞ objektu. Potom je nutnΘ pou₧φt tuto syntaxi: Kruh.prototype.getArea = function() { area = Math.PI * radius * radius; return area; } prototype" je konstrukΦnφ vlastnost ka₧dΘ vytvo°enΘ funkce. VÜechny metody a vlastnosti adresovanΘ prototype p°ejdou po vytvo°enφ objektu do vlastnosti "_proto_" Ka₧dß volanß vlastnost a metoda objektu je potom hledßna v objektu _proto_.
Popis p°eddefinovan²ch objekt∙Pro popis vÜech p°eddefinovan²ch objekt∙ s jejich metodami a vlastnostmi
prosφm navÜtivte nßsledujφcφ kapitoly:
|