FLASH MAHER
Adobe Flash Professional – Univerzalna knjiga
ACTION SCRIPT 3.0
OPP – OBJEKTNO ORIJENTISANO PROGRAMIRANJE
Adobe Flash Professional ima predviđene mogućnosti objektno orijentisanog programiranja koje se odnose i na dizajn (često se naziva objektno orijentisani dizajn) i na kodiranje – programiranje.
OOP u AS3.0 nam olakšava kodiranje u AS3.0, jer se uz pomoć OOP stvaraju pregledniji i razumljiviji kodovi, koje je lakše moguće ispravljati i ponovo koristiti. OOP podrazumeva organizovanje programa u objekte – pakete koda koji mogu da imaju svoje podatke, svojstva, metode i događaje. Praćenje i korišćenje svakog paketa je lakše uz OOP pomoću jednog podatka – instance (kojoj je dodeljen taj paket) pomoću koje je moguće pratiti i menjati sve ono što je vezano za taj paket.
Uobičajeni zadaci koje treba poznavati u OOP su definisanje klasa i definisanje svojstava i metoda – funkcija. Njihovo korišćenje nakon pravilnog definisanja je lako.
Pri OOP se stalno koristi reč klasa (class) koja predstavlja jedan objekat koji ima definisanu strukturu – kod i definisano ponašanje. Klase mogu biti hijerarhiski organizovane, t.j. jedna klasa može da nasleđuje funkcionalnost iz druge. Atributi klasa su karakteristike koje najčešće ukazuju na privatnost svojstava i metoda klasa. Kao i kod simbola, za korišćenje klasa se koriste instance, koje moraju da imaju svoja jedinstvena imena.
Klasa (njen kod) se piše u okviru posebnog fajla sa ’.as’ ekstenzijom, a ne u okviru glavnog fajla sa ’.fla’ ekstenzijom. Sastoji se iz ključnog imena ’class’ nakon koga sledi jedinstveno ime klase i na kraju u okviru velikih zagrada ’{ /*code*/ }’ telo klase. To izgleda ovako:
class MyFirstClass {
trace(“Hello!”);
}
AS3.0 Vam dozvoljava da izaberete glavne atribute klase i to:
– internal (klasa vidljiva u okviru sopstvenog paketa – osnovna vrednost)
– public (klasa vidljiva svuda)
– dinamic (klasa koju je moguće menjati programski)
– final (klasa ne moža da bude izvršena iz drugih klasa)
ActionScript fajl ’.as’ mora da ima jednu javno vidljivu definiciju klase označenu sa ’public class’, koja se piše u okviru paketa koji sadrži ključnu reč ’package’ i telo u okviru velikih zagrada ’{ }’. Osnovni izgled bi bio sledeći:
package {
public class MyFirstClass {
trace(“Hello!”);
}
}
Da bi ovaj paket funkcionisao potrebno je da se snimi u istom folderu u kome je i ’.fla’ fajl sa jedinstvenim imenom paketa ’MyFirstClass.as’ u ovom slučaju. Da bi pozvali ovaj paket iz glavnog ’.fla’ fajla potrebno je da u njemu unesete kod za uvoženje ovog paketa (import MyFirstClass;) i da formirate jednu instancu kao klasu:
var MyInstance: MyFirstClass = new MyFirstClass();
Postupak je sličan kreiranju bilo kog podatka ili funkcije:
var MyTraceFunction:Function = function () { trace(“Hi!”); }
To se zajedno kodira na sledći način:
import MyFirstClass;
var MyInstance:MyFirstClass = new MyFirstClass();
AS3.0 Vam dozvoljava da u okviru jednog paketa imate više klasa, koje su vidljive klasama iz ovog paketa, dok je samo glavna klasa ’public’ vidljiva svuda.
package {
public class MyFirstClass {
trace(“Hello!”);
var MySecondInstance:MySecondClass = new MySecondClass()č
}
}
class MySecondClass {
trace(“Hi again!”);
var MyThirdInstance:MyThirdClass = new MyThirdClass();
}
class MyThirdClass {
trace(“Hi, hi, hi!”);
}
Dinamičke klase dopuštaju da im se dodaju programski nove osobine.
package {
public dynamic class MyFirstClass {
trace(“Hello!”);
}
}
Novi ’.fla’ kod:
import MyFirstClass;
var MyInstance:MyFirstClass = new MyFirstClass();
MyInstance.NewValue = “Working…”;
trace(MyInstance.NewValue);
Atributi podataka, svojstava i metoda klase mogu biti:
– internal (osnovna vrednost – vidljivo u okviru paketa)
– private (vidljivo samo u okviru klase)
– public (vidljivo svuda)
– protected (vidljivo samo u okviru iste klase i izvedenih klasa)
– static (navodi pripadnost klasi)
– UserDefinedNamespace (prilagođeno ime koje definiše korisnik)
Možemo definisati podatke:
public var VisibleValue:String = “Use from .as & .fla file.”;
private var PackageValue:String = “Use only from .as file.”;
Slično kao i podaci i metode ili funkcije klase mogu biti:
– internal (osnovna vrednost – vidljivo u okviru paketa)
– private (vidljivo samo u okviru klase)
– public (vidljivo svuda)
– protected (vidljivo samo u okviru iste klase i izvedenih klasa)
– static (navodi pripadnost klasi)
– UserDefinedNamespace (prilagođeno ime koje definiše korisnik)
Kao i ranije funkcije u okviru klase mogu biti definisane na dva načina:
1) public function Example() { /* code */ }
2) public var Example:Function = function () { /* code */ }
Isto važi i za ulazne i izlazne vrednosti funkcija.
AS3.0 dopušta ne samo zamenu javnih vrednosti podataka klasama, već i zamenu metoda – funkcija uz pomoć naredbe ’override’. U sledećem primeru je objašnjeno izračunavanje površine objekta preko klase ’Answer’, s tim da se navodi kojoj klasi objekt pripada ’Square’ ili ’Circle’. Kada se navede kojoj klasi objekt pripada, odgovarajuća klasa menja funkciju klase ’Answer’.
OverrideExample.fla
import Answer;
import Circle;
import Square;
var Object_1:Circle = new Circle();
trace(Object_1.Value(5)); // 78.53981633974483
var Object_2:Square = new Square();
trace(Object_2.Value(5)); // 25
Answer.as
package {
public class Answer {
public function Value(InputValue:Number):Number {
return NaN;
}
}
}
Circle.as
package {
import Answer;
public class Circle extends Answer {
override public function Value(Radius:Number):Number {
return (Radius * Radius * Math.PI);
}
}
}
Square.as
package {
import Answer;
public class Square extends Answer {
override public function Value(Length:Number):Number {
return (Length * Length);
}
}
}
Kada se vidi ovaj primer sve izgleda tako prosto, ali retko ko uspe da oformi izvršenje ovih skripti, jer su na internetu mnoge informacije nepotpuno objašnjene.
U slučaju da imate više ’.as’ skripti i da želite da ih organizujete u foldere, možete i to da uradite uz navođenje putanje ’.fla’ fajlu gde se nalazi željeni ’.as’ fajl. Putanja se ne odvaja pomoću ’/’ već pomoću ’.’ i navodi se na sledeći način:
import Folder_1.Folder_2.Folder_3.File_2;
import Folder_1. File_1;
Odgovarajući paketi ’File_1.as’ i ’File_2.as’ moraju imati u sebi istovetne putanje iza ključne reči ’package’.
File_1.as
package Folder_1 { /* */ }
File_2.as
package Folder_1.Folder_2.Folder_3 { /* */ }
Moguće je i importovanje svih ’.as’ fajlova iz jednog direktorijuma, ako se napiše kod na sledeći način:
import Folder_1.Folder_2.Folder_3.*;
FLASH MAHER!
FLASH MAHER – UVOD!
FLASH MAHER – OSNOVNI PODACI!
FLASH MAHER – OPERATORI I USLOVNE NAREDBE!
FLASH MAHER – FUNKCIJE!
FLASH MAHER – DOGAĐAJI!
FLASH MAHER – FILTERI!
FLASH MAHER – GRAFIKA!
FLASH MAHER – MASKA!
FLASH MAHER – ANIMACIJA!
FLASH MAHER – OPP – OBJEKTNO ORIJENTISANO PROGRAMIRANJE!
FLASH MAHER – FLASH I PHP!
VojaMaher
[…] FILTERI! FLASH MAHER – GRAFIKA! FLASH MAHER – MASKA! FLASH MAHER – ANIMACIJA! FLASH MAHER – OPP – OBJEKTNO ORIJENTISANO PROGRAMIRANJE! FLASH MAHER – FLASH I […]
[…] FILTERI! FLASH MAHER – GRAFIKA! FLASH MAHER – MASKA! FLASH MAHER – ANIMACIJA! FLASH MAHER – OPP – OBJEKTNO ORIJENTISANO PROGRAMIRANJE! FLASH MAHER – FLASH I […]