1. Rychlý úvod do Adobe Flash / AS3

V tomto článku se vás pokusím rychle uvést do Adobe Flash a jazyku AS3 a ukážu základy potřebné pro praktickou práci. Předpokládám, že jste programátoři. Zbylé věci z prostředí Adobe Flash se lze doučit praxí.

AS3

Komentáře

// toto je jednořádkový komentář
/*
toto je komentář na
více řádků
*/
Funkce pro vypsání textu (při debuggingu)
trace("ahoj" + nejakyString + ".");

Proměnné

Základní:
// var název:Typ = hodnota;
var n:int = 5;
var a:Number = 4.3419;
var s:String = "Ahoj Ahoj";
var b:Boolean = true; // nebo false
Pole:
var a:Array = [];
a = [4, 3, "ahoj", b, true];
a[2] = "čau";
var n:Number = a[0];
Instance tříd:
// var název:Typ = new KonstruktorTřídy(parametry ...);
var mc:MovieClip = new MovieClip();
var tf:TextField = new TextField();

Podmínky

// if(podmínka) proveď jednu věc
// if(podmínka) {proveď víc věcí}
// else {proveď něco jiného}
if(x == 5) trace("x je pět");
else trace("x není pět");
Další operátory pro porovnávání naleznete ZDE

Cykly

// for (počáteční hodnota; podmínka; operace při cyklu) dělej něco
for(var i:int = 0; i < 10; i++)
{
   trace(i);
}
// while (podmínka) dělej něco
var j:int = 0;
while(j < 10)
{
   trace(j);
   j++;
}

Funkce

// function názevFunkce(parametry ...)
// :Typ návratové hodnoty nebo "void" {něco ...; return něco;}
function dvaKrat(a:int):int
{
   //nějaký kód ..
   return a*2;
}

Události

Veškeré asynchronní akce v Adobe Flash jsou prováděny přes systém událostí (Event) a tím, že jim nasloucháme a případně provedeme obslužnou rutinu. Většina tříd pochází z EventDispatcher a mají metody dispatchEvent(event) a addEventListener(typEventu, obslužnáFunkce). Některé DisplayObjecty (např. MovieClip) standardně vyvolávají události myši, klávesnice atd., stačí jim jen naslouchat.
 
// function názevFunkce(parametry):Typ návratové hodnoty 
//nebo "void" {dělej něco ...; return něco;}
var mc:MovieClip = new MovieClip();
mc.addEventListener("mojeUdalost", mojeFunkce);
var e:Event = new Event("mojeUdalost");
mc.dispatchEvent(e);

function mojeFunkce(ev:Event):void
{
   trace("zavolána událost");
}
Standardní události jsou typů Event, MouseEvent nebo KeyboardEvent.

MovieClip

Nejznámější třídou ve flashi je MovieClip. Je to zobrazovatelný objekt (DisplayObject), může obsahovat další objekty (je to i DisplayObjectContainer). Má časovou osu a vyvolává událost "enterFrame" podle FPS. Má metodu addChild(p) pro přidání objektu. Více o MC. Má vlastnosti jako "x", "y", "alpha", "width", "height" ...

Matematické funkce

Ty jsou ve statické, uloženy ve třídě Math. Jsou to např. sin, cos, abs, log, tan, min, max. Math.random() vrací náhodné číslo mezi 0 a 1. Obsahuje konstanty Math.PI nebo Math.E. Více o třídě Math.

Přklady AS3

Načítání obrázků

var obr:Array = ["obr1.jpg", "obr2.jpg", "novyobrazek.jpg"];

for(var i:int = 0; i<obr.length; i = i+1)  nactiObrazek( obr[i] );

function nactiObrazek (c:String) : void
{
   // dopíšeme načítání obrázku
   trace("Načítáme obrázek: " + c);
}
Teď si vytvoříme čtverec asi 30px x 30px, převedeme ho na MovieClip a nastavíme export pod třídou "Ctverec"

Umístění čtverců po diagonále

var ctverce : MovieClip = new MovieClip ()
addChild (ctverce);

for (var i:int = 0; i < 10; i++)
{
   var c:Ctverec = new Ctverec();
   c.x = i*50;
   c.y = i*50;
   ctverce.addChild(c);
}

Jednoduchá hra - počítá se počet najíždění na čtverce

var tf:TextField = new TextField();
addChild(tf);
tf.x = 200;

var n:int = 0;

for (var i:int = 0; i < 4; i++)
{
   for (var j:int = 0; j < 5; j++)
   {
      var c:Ctverec = new Ctverec();
      c.x = j*100;
      c.y = i*100;
      addChild(c);
      c.addEventListener(MouseEvent.MOUSE_OVER, mojeFunkce);
   }
}

function mojeFunkce(e:MouseEvent):void
{
   e.target.x = Math.random()*500;
   e.target.y = Math.random()*400;
   n++;
   tf.text = "Chytil jsi " + n + " čtverců";
}


6 komentářů:

  1. Anonymní ... (18. října 2010 v 9:48)

    Bude nejake pokracovanie?

  2. Ivan ... (19. října 2010 v 9:43)

    Ano, plánuji udělat stručný úvod do objektově orientovaného programování v AS3. Snad to budu mít během dvou týdnů.

  3. Anonymní ... (19. října 2010 v 11:57)

    Su tieto postery Flash/Flex nejak uzitocne?

    http://arunbluebrain.wordpress.com/2010/05/06/flex-4-and-flash-as3-hi-res-posters-download/

  4. Anonymní ... (19. října 2010 v 11:59)

    Zacinam s Flash Develop + Flex SDK 4.1 zda sa mi to pre ciste AS3 projekty super. Bude nieco aj o tom?

  5. Ivan ... (20. října 2010 v 7:52)

    Na těch plakátech je jen popis jmenných prostorů a tříd v nich obsažených. To vše a mnohem víc najdete na stránkách Adobe. Navíc, na plakátech chybí metody tříd, vlastnosti a hierarchická posloupnost. Avšak na to, že je to plakát, je tam toho celkem dost.

    Zde popisuji AS3, se kterým můžete programovat i ve Flash Developu. V něm však všechen kód patří nějaké třídě / její metodě. Více v příštím článku o OOP.

  6. Anonymní ... (21. října 2010 v 1:38)

    Vdaka, tesime sa.

Okomentovat