30 maaliskuuta, 2009

OSA 8. Kenttä näkyviin


ActionScript 3 ohjelmointi alkeet
OSA 8. Kenttä näkyviin

Objekteja on ainakin kahdenlaisia sen mukaan mitä ne osaavat tehdä:
1. Näkymättömiä, kuten XMLList, joka vain esim lataa dataa ohjelmaan, sekä 
2. Näkyviä, joilla voi olla jokin visuaalinen ulkoasu. (Näkyvä voi olla piilossa)
Jotta objekti voisi näkyä, sen pitää periytyä näkyvästä objektista, kuten Sprite, Shape tai MovieClip
Yksinkertaisesti Sprite luokka siis osaa näkyä ruudulla.
extends avainsana liittää luomamme luokan Sprite -luokan laajennukseksi.


package { // Hello.as <- tallenna tällä nimellä
   import flash.display.Sprite; // <- Tuo Sprite luokka
   import flash.text.TextField;
public class Hello extends Sprite { // <- Laajenna luokkaa
   var viesti:String = "Hello world";
   var tekstikentt:TextField = new TextField();
   public function Hello { tekstikentt.text = viesti; addChild(tekstikentt); // <- Näytä kenttä stagella    }  
    }  
}  

OSA 5. Tekstikenttä


OSA 5. TextField

Lisätään muuttuja tyyppiä TextField, joka on valmis objekti joka osaa näyttää tekstiä stagella. Se tuodaan paketin käyttöön import avainsanalla flashin text -kirjastosta flash.text.

package {
import flash.text.TextField;
public class Hello {
var viesti:String = "Hello world";
var tekstikentt:TextField; // muuttuja tyyppiä TextField
public function Hello {
} //constr
} // class
} // pack


Sanalla new luodaan muuttujaan uusi (tyhjä) tekstikentän ilmentymä:

package {
import flash.text.TextField;
public class Hello {
var viesti:String = "Hello world";
var tekstikentt:TextField = new TextField();
   public function Hello {
   } //constr
} // class
} // pack

TextField -objektilla on ominaisuus .text, joka sisältää ruudulla näytettävän merkkijonon. Siirretään konstruktorissa teksti kentän sisällöksi:

package {
import flash.text.TextField;
public class Hello {
var viesti:String = "Hello world";
var tekstikentt:TextField = new TextField();
public function Hello {
tekstikentt.text = viesti; // <- varsinainen koodi } //constr 
} // class 
} // pack 
Vieläkään teksti ei ole näkyvissä vaikka koodi ajettaisiin. TextField objekti on vielä liitettävä display -listaan. Se on lista joka sisältää kaikki swf -tiedoston ruudulla näkyvät elementit.

OSA 4. Merkkijonon sijoitus muuttujaan


ActionScript 3 ohjelmointi alkeet
OSA 4. Merkkijonon sijoitus muuttujaan

Lisätään muuttuja jonka tyyppi on merkkijono.
var -avainsana kertoo kyseessä olevan muuttujan alustus.
viesti on muuttujan nimi (Ei saa alkaa numerolla, ei välejä)
Kaksoispisteen perässä on tietotyyppi: String 
AS3 on vahvasti tyypitetty, joten tietotyyppi on aina annettava, joissain tapauksissa voi käyttää tyyppiä *, joka vastaa mitä tahansa tietotyyppiä.
Puolipiste on pakollinen rivin loppumerkki.

package {
public class Hello {
// Luokan sisällä yleisesti 
// käytetyt muuttujat tähän
var viesti:String;
public function Hello {
} //constructor
} // class
} // package


Sijoitetaan muuttujaan merkkijono "=" sijoitusoperattorilla;
Merkkijono erotetaan lainausmerkeillä muusta koodista.

package {
public class Hello {
var viesti:String = "Hello world"; // <- sijoitus
public function Hello() {
} //constr 
} // class 
} // pack

OSA 3. Konstruktori


ActionScript 3 ohjelmointi alkeet

OSA 3. Konstruktori

Lisätään luokkaan konstruktori (constructor), joka on metodi ( eli funktio ), joka ajetaan ensimäisenä ja automaattisesti, aina kun luokasta tehdään ilmentymä.
Sillä on aina sama nimi kuin luokalla ja tiedostolla.

package {
public class Hello { 
    public function Hello(){ // <- konstruktori alkaa
// Tähän väliin koodi joka ajetaan 
    } // <- konstruktori loppuu 
} // class 
} // pack

OSA 2. Luokka eli class


ActionScript 3 ohjelmointi alkeet

OSA 2. Luokka eli class

Lisätään pakettiin luokka:

package {
  class Hello { // Luokan nimi on tiedoston nimi (ilman .as)
  } // <- luokka loppuu myös aaltosulkeeseen 
} // <- paketti loppuu 
ActionScript 3 sisältää avainsanoja, joilla säädetään objektien näkyvyyttä suhteessa toisiinsa. 
Sanat protected tai final suojaavat tiedoston muutoksilta, 
private rajaa näkyvyyden luokan sisäiseksi. 
Oletusarvo internal näkyy koko paketin sisällä. 
Sana public avaa objektin suojaukset ja näyttää osan toteutuksesta ulkomaailmalle, objekti ei voi täysin sulkeutua jos sitä halutaan käyttää, joten yleensä ainakin konstruktori ja luokka ovat tyypiltään public. 
Julkaistaan luokka sanalla public: 
package { 
public class Hello { 
} // class 
} // pack

OSA 1. Paketti ja kommentti


ActionScript 3 ohjelmointi alkeet

OSA 1. Paketti ja kommentti

Kaikki alkaa paketista, joka on yksinkertainen tekstitiedosto, joka sisältää ohjelman koodin. Tekstitiedostolle annetaan nimi, yleensä isolla kirjaimella alkava ja tiedostopäätteenä .as 
Kirjaimet tulevat arvatenkin kielen nimestä.

Hello.as -tiedosto, joka sisältää (tyhjän) paketin:
packet {}

Yleensä ennen sanaa packet ei ole yhtään merkkiä, eikä viimeisten aaltosulkeiden jälkeen. Pidän kuitenkin tärkeänä koodin luettavuutta, joten kirjoitan usein kommentin aaltosulkeen perään, erottamaan lohkoja toisistaan.

Voidaan lisätä kommentteja, eli ohjeita jota ei käännetä eikä ajeta:

package {
//Yksirivinen kommentti alkaa kahdella kautta -merkillä

/* Tällainen monirivinen kommentti tarvitsee 
erikseen aloitus ja lopetus merkin
ja paketti on siis aina aaltosulkeiden välissä */
} // <-- paketin loppu (aaltosulkeet kiinni)

ActionScript 3 perusteet

Ensiaskel ohjelmointiin ActionScript 3 kielellä

Ongelmana ohjelmoinnin aloittamisessa voi olla saada toimiva ohjelmointiympäristö pystyyn. Myöskään yksinkertaisia kohta kohdalta ohjeita suomeksi ei tahdo löytyä. Saati sitten kun mennään ohjelmoinnissa pidemmälle.
Jotta voisi kokeilla toimiiko kyseinen ympäristö tarvitaan jokin ohjelma, jolla sen toimivuuden voisi kokeilla. Sitä varten usein tehdään ensin ns. HelloWorld ohjelma, jolla ympäristön toimivuus todetaan.
Siis varmasti toimiva yksinkertainen minimiohjelma, jolla näkee että kyllä se toimii. Tee tekstitiedosto nimeltä Hello.as ja siihen seuraava koodi.
package {
   import flash.display.Sprite;
   import flash.text.TextField;
    public class Hello extends Sprite {
public function Hello() {
  var helloDisplay:TextField = new TextField();
  helloText.text = "Hello World";
 addChild(helloText);

    }


Tämän kääntäminen valitulla ohjelmointiympäristöllä on se varsinainen ongelma, jonka aloittelija kohtaa. En siis syvenny koodiin ja syntaksiin tässä, sen aika on sitten, kun ohjelmointiympäristö pyörii. 
Yksinkertaisia ohjeita pystytykseen on vaikea antaa, koska ympäristöjä on useita erilaisia ja ohjeet hiukan erilaisia kunkin kohdalla. 
Mikäli rahaa on, voi suositella kaupallisia tuotteita, mutta ellei ole, on tyydyttävä seuraavaksi parhaaseen ja myös sen opastuksen tasoon.
Jos käyttää PC -koneita kuten useimmat, FlashDevelop on suositukseni.
Flash
Adoben kaupallinen, mainitsen ensin, koska tästä kaikki on alkanut.
FlashDevelop
Suomalaisten kehittämä ja ilmainen, vain PC -koneisiin. 
Xcode
Applen ohjelmointiympäristö, vaatii viritystä. Itse käytän tätä.
Eclipse
Vaatii viritystä. En tunne kovin hyvin vielä, ilmainen versio on olemassa.
Flex
Adoben kaupallinen versio, toimii lähes paketista.

Kullakin on ohjeita asentamiseen. Palataan niihin myöhemmissä posteissa.
Puran hello -koodin selventävillä kommenteilla myöhemmin.

Ajatustehdas aloittaa toimintansa

Ajatustehdas ruokkii mielikuvitusta ja rakastaa oppimista. 

Kirjoittaminen on ajatuksien jäsentämistä, joten oikeastaan kaikki syyt kirjoittaa ovat itsekkäitä.
Opettaminenkin on vain tehokkain tapa oppia itse. Ilmaisua on jo tullut opetettua, joten toivon  etten täysin puuduta lukijoitani, mikäli aihe kiinnostaa. 

Aiheita on aluksi mielessäni ainakin:
 
1. ActionScript 3 ohjelmointi. 
Alkaen ihan perusteista jatkuen kehittyneisiin ohjelmointimalleihin.

2. Epälineaarinen kerronta. 
Miten webissä kerrotaan (tai voitaisiin, vaikkei vielä osata) tarina. Miten tarinoita jo osataan kertoa.

3. Vuorovaikutteinen ilmaisu. 
Miten vuorovaikutus oikeastaan toimii. Miten tehdään toimivia sivustoja.

4. Kaikki mikä edellisiin liittyy suoraan tai epäsuorasti.

5. Kaikki mikä ei liity edellisiin millään tavalla on myös erittäin mielenkiintoista. 
Miten niin ei liity? Kaikki liittyy kuitenkin jotenkin...

Näillä viidellä aiheella aion pärjätä. Ja sulkea suuni muista asioista.