Podmínky:

Zápis podmínky

Podmínka je pro běh programu nesmírně důležitá, protože vám poskytuje způsob, jak účelně reagovat na určité podněty. Slovně vypadá podmínka takto: jestliže je splněna tato podmínka, pak proveď tyto příkazy. Zápis pak není o nic složitější:

if (x>15) {
    _root.rucicka._rotation=x;
  } else {
    _root.rucicka._rotation=0;
}

Jestliže (if) bude proměnná "x" větší než 15, skript nastaví instanci "rucicka" rotaci o velikosti "x". Jinak (else) - pokud nebude větší než 15, nastaví se rotace ručičky na 0.

Dávejte si pozor, abystepoužili správný logický operátor (seznam najdete o kousek níže). Dále je třeba dbát na to, aby byla nastavena správná adresa k proměnné.

Pokud chcete, můžete použít výraz else if. Tento příkaz vlastně jen rozšiřuje stávající podmínku o novou a zkracuje tak zápis (jinak byste museli použít vícero ifů za sebou, což není zrovna nejpohodlnější). Syntaxe vypadá takto:

if (x>0) {
	 pole.text="cislo je kladne"
} else if (x==0) {
  	pole.text="cislo je rovno nule"
} else if (x<0){
		 pole.text="cislo je zaporne"
} else {
	pole.text="neni to cislo"
}
Hlavní rozdíl mezi tímto zápisem a zápisem, kde by byly použity zvlášť čtyři ify je v tom, že když používáte else if, provede se vždy pouze jedna větev příkazů, kdežto když to rozepíšete do čtyř ifů, mohou být provedeny všechny čtyři.

Samotná podmínka se vkládá do kulatých závorek a příkazy, které se mají provést, do složených. Pokud tedy je splněna podmínka (=je vyhodnocena jako true), program provede příkazy ve složených závorkách a pokračuje dále. Pokud podmínka není splněna (=je vyhodnocena jako false), program neprovede příkazy v závorkách a pokračuje dále. Pokud podmínka obsahuje větev else, provedou se příkazy v této větvi. Tedy větev else se provádí jen když není splněna hlavní podmínka.

Přehledně to ukazuje následující diagram:

diagram podmínek

Logické operátory

Následuje seznam použitelných logických operátorů:
operátor jak probíhá příklad použití
== zjišťování rovnosti if (x=="pepa") - pokud je hodnota "x" rovna "pepa", podmínka bude vyhodnocena jako true a provedou se příkazy v závorkách.
!= zjišťování nerovnosti if (x!="pepa") - pokud hodnota "x" není rovna řetězci "pepa", podmínka bude vyhodnocena jako true a provedou se příkazy v závorkách. Pokud se proměnná "x" bude rovnat řetězci "pepa", podmínka bude false a program neprovede příkazy v závorkách.
> větší než... if (x>0) - jestliže je "x" větší než 0, podminka bude true
< menší než... if (ucet<15000) - jestli bude proměnná "ucet" menší než 15000, podminka bude vyhodnocena jako true
<= menší nebo rovno if (hodina<=12) - pokud má proměnná "hodina" hodnotu 12 nebo méně, podmínka bude true
>= větší nebo rovno if (0.25>=nasobek) - když má číslo 0.25 větší nebo stejnou hodnotu jako "nasobek", bude podmínka true
&& konjunkce - logické A (and) if (x>12 && x<13) - jestliže má "x" hodnotu větší než 12 a zároveň má "x" hodnotu menší než 13 (je z intervalu (12,13)), podmínka bude true
|| disjunkce - logické NEBO (or) (if y>1 || y==0) - když je "y" větší než 1 nebo se rovná nule, podmínka bude true
Poměrně častou chybou (hlavně z řad uživatelů Pascalu) je zjišťování rovnosti pomocí jednoho rovnítka, namísto dvou. Jedno rovnítko slouží pouze k přiřazování, nikoliv ke zjišťování.

Zaheslování stránek

Jednoduchý příklad na podmínky je zaheslování stránek.

Vytvořte si na hlavní scéně inputové pole, které pojmenujte "heslo". Vytvořte dva movie clipy, jeden bude představovat utajovanou stránku a druhý pak stránku, na kterou se uživatel dostane, když zadá špatné heslo. Instance přidejte na hlavní scénu a pojmenujte "tajne" a "spatne".

Do prvního snímku časové osy pak napište tento script:

tajne._visible=0;
spatne._visible=0;

Tento skript zneviditelní obě instance, kterou jste před chvílí vytvořili.

Vedle textového pole umístěte tlačítko a připojte k němu následující skript:

on (release) {
  if (_root.heslo.text=="666") {
    tajne._visible=1;
  } else {
    spatne._visible=1;
  }
}

Program tedy bude probíhat takto: Po stisknutí tlačítka se vyhodnotí podmínka - jestliže je hodnota textového pole "heslo" rovna 666, zviditelní se instance "tajne", jestliže bude hodnota pole jakákoliv jiná, zviditelní se instance "spatne".

Místo hodnot true/false můžete také používat 1/0 se stejným významem. Program Flash tomu porozumí naprosto stejně.
prohlédnout
stáhnout zdroják

Interaktivní ovládání objektu

Abyste neřekli, že zde dávám samé jednoduché příklady, pokusím se nyní vysvětlit poněkud obsáhlejší příklad. Nejdříve si tedy animaci prohlédněte, ať víte, jak bude vypadat výsledek (zkuste hýbat se zelenou koulí).

Takže si vytvořte nový dokument o velikosti 600px na 300px a černém pozadí, aby to vypadalo stylově o Frame Rate tak 18. Rozdělte si ho na dvě půlky, stejně jako jste viděli v příkladu.

Nyní vytvořte první movie clip - zelenou kouli, která bude sloužit jako joystick. Výšku a šířku koule nastavte na 70 a vycentrujte na střed. Instanci tohoto symbolu poté vložte do hlavní scény, pojmenujte "joystick" a vycentrujte do levé půlky scény (x:115, y:115).

Nyní vytvořte druhý movie clip - červenou kouli, kterou budete řídit. Šířku a výšku opět nastavte stejnou - 30. Vložte instanci do hlavní scény, vycentrujte do pravé půlky (x:435 y:135) a pojmenujte "auto".

Jestli chcete, dejte ještě doprostřed levé půlky křížek, aby bylo vidět, kde je neutrální poloha.

K joysticku nyní připojte tento skript:

on (press) {
  startDrag (this);
}
on (release, releaseOutside) {
  stopDrag();
}

Toto jsou nové příkazy, které patrně ještě neznáte. Příkaz startDrag() slouží k pohybování s objekty. Pokud tedy kliknete na objekt, můžete ho přenášet jako okna ve Windows. stopDrag() poté slouží k položení daného objektu.

Nyní připojte k joysticku další skript:

onClipEvent (enterFrame) {
  speedy=((_y-150)/5);
  speedx=((_x-150)/5);
  _root.auto._x+=speedx;
  _root.auto._y+=speedy;
}

Příkazy se budou provádět každý snímek. První dva řádky slouží k zjišťění aktuální rychlosti, kterou se má "auto" pohybovat. Od souřadnic joysticku se nejprve odečte 150, abychom na začátku dostali nulovou rychlost. Středové souřadnice zjistíte tak, že k normálním souřadnicím přičtete polovinu x-ové respektive y-ové velikosti objetku. Samotnou rychlost poté ještě vydělte pěti, jinak by se auto pohybovalo strašně rychle. Další dva příkazy pak zvyšují (či snižují) x-ové a y-ové souřadnice o rychlost, kterou jste před chvíli vypočetli a tím vlastně vzniká samotný pohyb červené koule. Opět do joysticku přidejte následující skript (vložte jej do události onClipEvent()):

if (_x>265) {
  _x=265;
}
if (_x<35) {
  _x=35;
}
if (_y<35) {
  _y=35;
}
if (_y>265) {
  _y=265;
}

Všechny tyto příkazy mají za úkol jediné. Zjišťovat, jestli se zelená koule (joystick) nedostala mimo hranice scény. Pokud se tak stane, program přiřadí kouli souřadnice takové, aby byla přesně na hranici. Například pokud pohnete zelenou koulí doprava, zarazí se vám o zelenou čáru, rozdělující scénu na dvě půlky. Neboli řečeno programátorsky: Pokud budou x-ové středové souřadnice tohoto objektu větší než 265 (opět musíte od 300 - šířka poloviny scény - odečíst poloviční velikost zelené koule, tj.35), přiřaď tomuto objetku x-ovou souřadnici 265. Zkuste si to. Vidíte, že se prostě přes zelenou čáru nedostanete. Teď vyberte druhou kouli "auto" a přidejte ji tento skript:

onClipEvent (enterFrame) {
  if (_y<15) {
    _y=285;
  }
  if (_y>285) {
    _y=15;
  }
  if (_x>585) {
    _x=315;
  }
  if (_x<315) {
    _x=585;
  }
}

Je to v podstatě něco podobného, jako u joysticku. Jenže tentokrát pokud se koule dostane na hranici, hodíte ji na druhou stranu scény. Neboli - jakmile je x-ová souřadnice větší než 585 (tzn. jakmile koule přejde přes pravý okraj scény), přiřaď tomuto symbolu x-ovou souřadnici 315 (neboli levý okraj scény, kde se koule má pohybovat). Animace je nyní hotová a ani to snad nebolelo.

prohlédnout
stáhnout zdroják
Další téma - Cykly

hlavní stránka # o tento web se stará Lukáš Havrlant # lukas.havrlant@gmail.com