окт 302014
 

FLASH MAHER

 

Adobe Flash Professional – Univerzalna knjiga

ACTION SCRIPT 3.0

 

DOGAĐAJI

 

FLASH MAHER - DOGAĐAJI

FLASH MAHER – DOGAĐAJI

 

Za savladavanje događaja najpre se moraju znati funkcije. AS3.0 nam nudi programiranje funkcija koje se izvršavaju klasičnim pozivanjem i funkcija koje se izvršavaju kada se desi neki događaj.
Događaji su osnova formiranja dinamičkog sadržaja. U zavisnosti od toga šta se desi – pritisak na neko slovo tastature, klik mišem i slično, programiraju se odgovarajuće akcije. Najviše su u upotrebi događaji koji se izvršavaju posle određenog vremena (TimerEvent), događaji izazvani tastaturom (KeyboardEvent), i događaji izazvani mišem (MouseEvent). Za njihovo korišćenje potrebno je da programu damo informaciju da prati – sluša kada se desi događaj, i kada se to desi da izvrši predviđenu akciju – funkciju. Svako kodiranje događaja ima sličan postupak, ali svaki događaj ima svoj kod gde je opisan tip događaja, tip osluškivanja i ime funkcije koja se izvršava kada se događaj desi.
Događaj koji se izvršava posle određenog vremena je najviše u upotrebi. U narednom primeru koristimo pomeranje kruga na svakih 30 ms za 2 piksela levo ili desno.

import flash.display.Sprite;

import flash.events.TimerEvent;

var Step:int = 2;

var Circle:Shape = new Shape();

Circle.x = Circle.y = 200;

Circle.graphics.beginFill(0x000000);

Circle.graphics.drawCircle(0, 0, 100);

Circle.graphics.endFill();

stage.addChild(Circle);

var NewTimer:Timer = new Timer(30);

NewTimer.addEventListener(TimerEvent.TIMER, MoveCircle);

NewTimer.start();

function MoveCircle(event:TimerEvent):void {

if(Circle.x == 100 || Circle.x == 450) {

Step *= -1;

}

Circle.x += Step;

event.updateAfterEvent();

}

Kada u radu treba da prekinemo izvršavanje bilo kog događaja, kao što smo ga uključili, potrebno je i da ga isključimo. Naredba za to je ’removeEventListener’, koja se koristi isto kao i ’addEventListener’. Za ’TimerEvent’ je poželjno upotrebiti i ’NewTimer.stop()’ za zaustavljanje tajmera iz gornjeg primera.

Primer 3: Analogni i digitalni sat!

import flash.text.TextField;

import flash.utils.Timer;

import flash.events.TimerEvent;

import flash.display.MovieClip;

import flash.filters.GlowFilter;

import flash.filters.DropShadowFilter;

import flash.text.TextFormat;

var Now:Date;

var NewTextFormat:TextFormat = new TextFormat(„courier“, 20, 0x000000, true, false, false, null, null, „center“);

var Glow:GlowFilter = new GlowFilter(0x000000, 0.5, 10, 10);

var Shadow:DropShadowFilter = new DropShadowFilter(5, 45, 0x000000, 0.7);

var DigitalClock:TextField = new TextField();

DigitalClock.width = 550;

DigitalClock.defaultTextFormat = NewTextFormat;

DigitalClock.filters = [Glow];

stage.addChild(DigitalClock);

var AnalogClok:MovieClip = new MovieClip();

for(var Id:int = 0; Id < 24; Id ++) {

AnalogClok.graphics.lineStyle(2, 0x000000, 1);

var BodyMatrix:Matrix = new Matrix(1, 0, 0, 1, 0, 0);

BodyMatrix.createGradientBox(20, 20, 0, 275 – 150 * Math.cos(360 / 12 * Id * Math.PI / 180)-10, 200 – 150 * Math.sin(360 / 12 * Id * Math.PI / 180)-10);

AnalogClok.graphics.beginGradientFill(„radial“, [0xdddddd, 0x333333], [1, 1], [0, 255], BodyMatrix, „repeat“, „rgb“, 0);

AnalogClok.graphics.drawCircle(275 – 150 * Math.cos(360 / 12 * Id * Math.PI / 180), 200 – 150 * Math.sin(360 / 12 * Id * Math.PI / 180), 10);

AnalogClok.graphics.endFill();

AnalogClok.filters = [Glow, Shadow];

stage.addChild(AnalogClok);

}

function CreateClockWise(ClockWiseName, WiseColor, Length, Width):void {

ClockWiseArray[ClockWiseName] = new MovieClip();

ClockWiseArray[ClockWiseName].graphics.lineStyle(2, 0x000000, 1);

var BodyMatrix:Matrix = new Matrix(1, 0, 0, 1, 0, 0);

BodyMatrix.createGradientBox(2 * Width, Length, 0, -Width, 0);

ClockWiseArray[ClockWiseName].graphics.beginGradientFill(„linear“, [0xaaaaaa, WiseColor, 0xaaaaaa], [1, 1, 1], [40, 128, 215], BodyMatrix, „repeat“, „rgb“, 0);

ClockWiseArray[ClockWiseName].graphics.drawEllipse(-Width / 2, 0, Width, -Length);

ClockWiseArray[ClockWiseName].graphics.drawCircle(0, -Length, Width);

ClockWiseArray[ClockWiseName].graphics.endFill();

ClockWiseArray[ClockWiseName].x = 275;

ClockWiseArray[ClockWiseName].y = 200;

ClockWiseArray[ClockWiseName].filters = [Shadow];

stage.addChild(ClockWiseArray[ClockWiseName]);

}

var ClockWiseArray:Array = new Array();

CreateClockWise(„HoursWise“, 0x0000ff, 80, 30);

CreateClockWise(„MinutesWise“, 0x00ff00, 110, 20);

CreateClockWise(„SecondsWise“, 0xff0000, 140, 10);

var FastTimer:Timer = new Timer(30);

FastTimer.addEventListener(TimerEvent.TIMER, ShowTime);

FastTimer.start();

function ShowTime(event:TimerEvent):void {

Now = new Date();

DigitalClock.text = Now.date > 9 ? String(Now.date) + „.“: „0“ + String(Now.date) + „.“;

Now.month + 1 > 9 ? DigitalClock.appendText(String(Now.month + 1)): DigitalClock.appendText(„0“ + String(Now.month + 1));

DigitalClock.appendText(„.“ + Now.fullYear + „. „);

Now.hours > 9 ? DigitalClock.appendText(String(Now.hours) + „:“): DigitalClock.appendText(„0“ + String(Now.hours) + „:“);

Now.minutes > 9 ? DigitalClock.appendText(String(Now.minutes) + „:“): DigitalClock.appendText(„0“ + String(Now.minutes) + „:“);

Now.seconds > 9 ? DigitalClock.appendText(String(Now.seconds)): DigitalClock.appendText(„0“ + String(Now.seconds));

Now.hours > 12 ? ClockWiseArray[„HoursWise“].rotation = (Now.hours – 12) * 360 / 12: ClockWiseArray[„HoursWise“].rotation = Now.hours * 360 / 12;

ClockWiseArray[„HoursWise“].rotation += Now.minutes / 60 * 360 / 12;

ClockWiseArray[„MinutesWise“].rotation = Now.minutes * 360 / 60 + Now.seconds / 60 * 360 / 60;

ClockWiseArray[„SecondsWise“].rotation = Now.seconds * 360 / 60;

event.updateAfterEvent();

}

Događaji vezani za tastaturu mogu pratiti pritisak tastera i otpuštanje testera. Kada se desi ovakav događaj, Flash šalje informaciju u kojoj su podaci o tome koji je taster u pitanju, funkciji koja je navedena.

import flash.events.KeyboardEvent;

import flash.text.TextField;

var ShowTextField:TextField = new TextField();

ShowTextField.width = stage.stageWidth;

ShowTextField.height = stage.stageHeight;

stage.addChild(ShowTextField);

ShowTextField.addEventListener(KeyboardEvent.KEY_DOWN, KeyIsPressed);

function KeyIsPressed(event:KeyboardEvent):void {

ShowTextField.text = event.charCode.toString();

ShowTextField.appendText(„\nkeyDownHandler: “ + event.keyCode);

ShowTextField.appendText(„\nctrlKey: “ + event.ctrlKey);

ShowTextField.appendText(„\nkeyLocation: “ + event.keyLocation);

ShowTextField.appendText(„\nshiftKey: “ + event.shiftKey);

// ShowTextField.appendText(„\naltKey: “ + event.altKey.toString()); // Error

}

Isti je postupak i za pisanje koda za događaj kada se taster pusti:

SomeTextField.addEventListener(KeyboardEvent.KEY_UP, KeyIsReleased);

Primer 4: Pomeranje objekta strelicama!

import flash.text.TextField;

import flash.events.KeyboardEvent;

import flash.display.MovieClip;

var KeyTarget:MovieClip = new MovieClip();

KeyTarget.graphics.lineStyle(2, 0x000000, 1);

KeyTarget.graphics.beginFill(0xff00ff, 1);

KeyTarget.graphics.drawCircle(0, 0, 30);

KeyTarget.graphics.endFill();

KeyTarget.x = 275;

KeyTarget.y = 200;

stage.addChild(KeyTarget);

var Left:int = 0;

var Right:int = 0;

var Up:int = 0;

var Down:int = 0;

var InputField:TextField = new TextField();

InputField.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);

InputField.addEventListener(KeyboardEvent.KEY_UP, KeyUp);

function KeyDown(event:KeyboardEvent):void {

switch(event.keyCode) {

case 37:

Left = 1;

break;

case 39:

Right = 1;

break;

case 38:

Up = 1;

break;

case 40:

Down = 1;

break;

default:

break;

}

}

function KeyUp(event:KeyboardEvent):void {

switch(event.keyCode) {

case 37:

Left = 0;

break;

case 39:

Right = 0;

break;

case 38:

Up = 0;

break;

case 40:

Down = 0;

break;

default:

break;

}

}

var FastTimer:Timer = new Timer(20);

FastTimer.addEventListener(TimerEvent.TIMER, StageFocus);

FastTimer.start();

function StageFocus(event:TimerEvent):void {

stage.focus = InputField;

InputField.text = „“;

KeyTarget.x += Right – Left;

KeyTarget.y += Down – Up;

event.updateAfterEvent();

}

U ovom primeru je pokazano lako razumljivo kodiranje za pamćenje svakog tastera posebno, i to je iskorišćeno za koso pomeranje objekta.

Primer klika levim tasterom miša na ’stage’ je najprostiji za shvatanje korišćenja događaja. Informacije koje se ovde šalju su i pozicija miša na objektu preko koga je kliknuto.

import flash.events.*;

stage.addEventListener(MouseEvent.CLICK, ClickOnStage);

function ClickOnStage(event:MouseEvent):void {

trace(„New click.“);

trace(„x=“ + stage.mouseX + “ y=“ + stage.mouseY);

}

Ovo je očigledan primer kako se izvršavaju događaji. Kada ponovo kliknete na ’stage’ funkcija će se ponovo izvršiti. Ako želite da se ne izvršava ponovo potrebno je isključiti osluškivač, kao u sledećim linijama.

import flash.events.*;

stage.addEventListener(MouseEvent.CLICK, ClickOnStage);

function ClickOnStage(event:MouseEvent):void {

stage.removeEventListener(MouseEvent.CLICK, ClickOnStage);

trace(„Event is removed.“);

}

Događaji koje inicira miš su mnogobrojni. Moguć je klik mišem ’CLICK’ na neki objekt, pritisak dugmeta ’MOUSE_DOWN’, otpuštanje dugmeta ’MOUSE_UP’, pomeranje miša ’MOUSE_MOVE’, rotiranje točkića ’MOUSE_WHELL’ preko objekta, dolazak kursora preko objekta ’MOUSE_OVER’ i ’ROLL_OVER’, izlazak kursora van objekta ’MOUSE_OUT’ i ’ROLL_OUT’, i dvostruki klik mišem preko objekta ’DOUBLE_CLICK’. Na primeru se vidi kako se koriste neki od događaja, čija se izvršne funkcije odnose na menjanje izgleda kruga. Pored ovih moguće je kontrolisati i klik na centralni i desni taster miša.

import flash.display.Sprite;

import flash.events.MouseEvent;

import flash.filters.DropShadowFilter;

var CurrentColor:uint = 0x000000;

var CurrentSize:int = 100;

var Shadow:DropShadowFilter = new DropShadowFilter(10, 45, 0x888888, 0.5);

var Circle:Sprite = new Sprite();

Circle.x = Circle.y = 200;

Circle.graphics.beginFill(0x000000);

Circle.graphics.drawCircle(0, 0, CurrentSize);

Circle.graphics.endFill();

Circle.doubleClickEnabled = true;

stage.addChild(Circle);

Circle.addEventListener(MouseEvent.CLICK, ChangeColor);

Circle.addEventListener(MouseEvent.MOUSE_WHEEL, ChangeSize);

Circle.addEventListener(MouseEvent.DOUBLE_CLICK, Animation);

Circle.addEventListener(MouseEvent.MOUSE_OUT, RemoveShadow);

Circle.addEventListener(MouseEvent.MOUSE_OVER, ShowShadow);

function ChangeColor(event:MouseEvent):void {

CurrentColor = Math.random() * 256 * 256 * 256;

Circle.graphics.clear();

Circle.graphics.beginFill(CurrentColor);

Circle.graphics.drawCircle(0, 0, CurrentSize);

Circle.graphics.endFill();

}

function ChangeSize(event:MouseEvent):void {

CurrentSize += event.delta; // default: event.delta = 3

Circle.graphics.clear();

Circle.graphics.beginFill(CurrentColor);

Circle.graphics.drawCircle(0, 0, CurrentSize);

Circle.graphics.endFill();

}

function Animation(event:MouseEvent):void {

Circle.x += 10;

}

function RemoveShadow(event:MouseEvent):void {

Circle.filters = [];

}

function ShowShadow(event:MouseEvent):void {

CurrentColor = Math.random() * 256 * 256 * 256;

Circle.filters = [Shadow];

}

Primer 5: Pogađanje slučajnog celog broja od 1 do 99!

import flash.display.*;

import flash.text.*;

var AllTextFormat:TextFormat = new TextFormat(„Geogia“, 20, 0x000000, true, false, false, null, null, TextFieldAutoSize.CENTER, null, null, null, null);

var StaticTextField:TextField = new TextField();

StaticTextField.x = 100;

StaticTextField.y = 50;

StaticTextField.width = 350;

StaticTextField.height = 50;

StaticTextField.defaultTextFormat = AllTextFormat;

StaticTextField.text = „Click on stage to start…“;

stage.addChild(StaticTextField);

var AnswerTextField:TextField = new TextField();

AnswerTextField.x = 100;

AnswerTextField.y = 250;

AnswerTextField.width = 350;

AnswerTextField.height = 150;

AnswerTextField.multiline = true;

AnswerTextField.defaultTextFormat = AllTextFormat;

stage.addChild(AnswerTextField);

var InputTextField:TextField = new TextField();

InputTextField.x = 225;

InputTextField.y = 150;

InputTextField.width = 100;

InputTextField.height = 50;

InputTextField.border = true;

InputTextField.borderColor = 0x0000ff;

InputTextField.defaultTextFormat = AllTextFormat;

InputTextField.restrict = „0-9“;

InputTextField.maxChars = 2;

InputTextField.type = TextFieldType.INPUT;

stage.addChild(InputTextField);

var MyNumber:int;

var YourMove:int;

stage.addEventListener(MouseEvent.CLICK, Start);

function Start(event:MouseEvent):void {

stage.removeEventListener(MouseEvent.CLICK, Start);

MyNumber = int(Math.random() * 98.99 + 1);

YourMove = 0;

StaticTextField.text = „Find my random number (1-99)!“;

InputTextField.text = „?“;

AnswerTextField.text = „Insert number in box…\n And press ‘ENTER’…“;

InputTextField.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler);

}

function KeyDownHandler(event:KeyboardEvent):void {

if(event.keyCode == 13) {

CheckAnswer();

}

}

function CheckAnswer():void {

YourMove ++;

AnswerTextField.text = „Move: “ + String(YourMove) + “ => “ + InputTextField.text + „\n“;

if(int(InputTextField.text) == MyNumber) {

InputTextField.removeEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler);

AnswerTextField.appendText(„Bravo!\nYou have found my number…“);

StaticTextField.text = „Click on stage to play again…“;

stage.addEventListener(MouseEvent.CLICK, Start);

}

else {

if(int(InputTextField.text) < MyNumber) {

AnswerTextField.appendText(„My number is greater than “ + InputTextField.text + „\nTry again…“);

}

else {

AnswerTextField.appendText(„My number is less than “ + InputTextField.text + „\nTry again…“);

}

}

}

Zapamtite da kada radite bilo koji program, kada završite sa nekim događajem obavezno isključite njegov osluškivač. Ako ovo zaboravite mogu nastati greške koje se obično javljaju kada se isti delovi programa pozivaju više puta.

U ovom primeru je ostvaren naizmenični transfer informacija između korisnika i programa, što vezuje korisnika da posveti neko vreme ovom programu. Međutim dizajn je veoma loš, tako da ako želimo da ukrasimo naše animacije, potrebno je da savladamo filtere i rad sa simbolima za početak.

 

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

окт 292014
 

FLASH MAHER

 

Adobe Flash Professional – Univerzalna knjiga

ACTION SCRIPT 3.0

 

FUNKCIJE

 

FLASH MAHER – FUNKCIJE

 

Pri pisanju velikog koda došlo je do potrebe – ideje, da se zamene isti ili slični delovi koda koji se ponavljaju više puta, jednim delom koda (prilagodljivim po potrebi) koji može da se poziva više puta, radi lakšeg snalaženja, razumevanja i preglednosti. Sa ovim ciljem stvorene su funkcije koje predstavljaju blokove koda. Organizovane su u zasebne celine, sa ciljem da se više puta izvrše određeni zadaci. Svaka funkcija ima svoje jedinstveno ime, i može da se poziva više puta kad god je potrebno.
AS3.0 ima veliki broj formiranih funkcija koje možemo pozivati. Njihov kod nije prikazan kao ni kod bilo koje ugrađene osobine koju Flash nudi.

Globalne funkcije u AS3.0 su: Array, Boolean, decodeURI (Uniform Resource Identifier), decodeURIComponent, encodeURI, encodeURIComponent, escape, int, isFinite, isNaN, isXMLName, Number, Object, parseFloat, parseInt, String, trace, uint, unescape, Vector, XML i XMLList.
Najprostiji način pozivanja funkcije:

trace(„Hi!“);

AS3.0 nam naravno dopušta da kreiramo kodom sopstvene funkcije. Postoji dva načina definisanja funkcija.
1) Nakon ključne reči ’function’ navodimo jedinstveno ime funkcije. Iza imena funkcije se nalazi obavezno par malih zagrada ( ), između kojih mogu, a ne moraju da se nalaze ulazni podaci ove funkcije odvojeni zarezima. Nakon malih zagrada može a ne mora da stoji dodatak (označava povratnu informaciju iz funkcije) koji se odvaja znakom ’:’. Nakon ovakvog formiranja karakteristika funkcije, u okviru velikih zagrada { } se piše blok koda koji se izvršava kada se pozove funckija. AS3.0 ne izvršava funkcije dok se ne pozovu iz koda, tako da kodovi funkcija mogu da se nađu na bilo kom mestu celokupnog koda – početku, sredini ili kraju.

function MyTraceFunction() { trace(“Hi!”); }

2) Kreiranjem podatka definisanog kao ’Function’.

var MyTraceFunction:Function = function () { trace(“Hi!”); }

Bez obzira koji smo od ova dva načina definisanja funkcije iskoristili, kada poželimo u kodu možemo izvršiti našu funkciju.

MyTraceFunction();

Funkcije koje se izvršavaju klasičnim pozivanjem mogu a ne moraju imati ulazne parametre, i mogu a ne moraju imati povratne informacije.

function SayHi(Name:String):void {

trace(„Hi “ + Name + „!“);

}

SayHi(„Your name“);

U ovom slučaju ulazni parametar se zove „Name“ i pripada klasi ’String’. Kada iza funkcije piše ’:void’ podrazumeva se da funkcija ne šalje nazad povratne informacije. Preporuka je da se uvek piše ’:void’ kada je to moguće (nekada je i obavezno) da bi program radio.
Kada iza funkcije stoji neka klasa kao što je na primer ’Number’, to znači da funkcija treba da vrati informaciju klase ’Number’ tamo odakle je pozvana.

function SQRT(InputIntegerNumber:int):Number {

return Math.sqrt(InputIntegerNumber);

}

var Answer:Number = SQRT(2);

trace(Answer);

trace(SQRT(3));

Povratna informacija može biti bilo koja klasa. Glavne klase u AS3.0 su: ArgumentError, arguments, Array, Boolean, Class, Date, DefinitionError, Error, EvalError, Function, int, Math, Namespace, Number, Object, QName, RangeError, ReferenceError, RegExp, SecurityError, String, SyntaxError, TypeError, uint, URIError, Vector, VerifyError, XML i XMLList.

Svaka klasa može da ima definisana svoja svojstva, metode i konstante. Na primer klasa ‘Math’ ima definisane konstante: E:Number = 2.71828182845905; LN10:Number = 2.302585092994046; LN2:Number = 0.6931471805599453; LOG10E:Number = 0.4342944819032518; LOG2E:Number = 1.442695040888963387; PI:Number = 3.141592653589793; SQRT1_2:Number = 0.7071067811865476 i SQRT2:Number = 1.4142135623730951 i definisane metode: abs(val:Number):Number; acos(val:Number):Number; asin(val:Number):Number; atan(val:Number):Number; atan2(y:Number, x:Number):Number; ceil(val:Number):Number; cos(angleRadians:Number):Number; exp(val:Number):Number; floor(val:Number):Number; log(val:Number):Number; max(val1:Number, val2:Number, … rest):Number; min(val1:Number, val2:Number, … rest):Number; pow(base:Number, pow:Number):Number; random():Number; round(val:Number):Number; sin(angleRadians:Number):Number; sqrt(val:Number):Number i tan(angleRadians:Number):Number. Sva svojstva i metode vraćaju rezultat klase ‘Number’, a neke imaju neke od metoda zahtevaju jednu a neke dve ili vise ulaznih veličina.

trace(Math.cos(60 * Math.PI / 180));

Ulazne informacije u funkciju AS3.0 pretvara u niz i deklariše kao ’arguments’. Možete koristiti argumente funkcije za rekurzivno pozivanje funkcija.

TraceNumberOfRepeat (10, „*“);

function TraceNumberOfRepeat (NumberOfRepeat:int, Comment:String):void {

trace(arguments[0] + “ “ + arguments[1] + „*“);

if(arguments[0] > 1) arguments.callee(arguments[0] – 1, arguments[1] + „*“);

}

Ovaj primer ima 2 ulazne informacije: ’NumberOfRepeat’ klase ’int’ koji se imenuje i kao ’arguments[0]’ i ’Comment’ klase ’String’ koji se imenuje i kao ’arguments[1]’. Naredba ’arguments.callee ’ menja ime ’ TraceNumberOfRepeat’.
Specijalni način pozivanja funkcije za razumevanje argumenata je korišćenje ’rest’ parametra (ostalih parametara):

function ArgumentsArray(FirstValue:int, … RestArguments) {

trace(„FirstValue=“ + FirstValue);

for (var Id:uint = 0; Id < RestArguments.length; Id ++) {

trace(„Argument[“ + String(Id) + „]=“ + RestArguments[Id]);

}

}

ArgumentsArray(13, 222, 456);

Ovakav opis funkcije dozvoljava da na kraju imate proizvoljan broj podataka.
U slučaju da neki od ulaznih parametara ima obično neku očekivanu vrednost, to može da se naznači pri definisanju funkcije:

function DefaultValue(FirstValue:int = 1, SecondValue:int = 2):int {

return FirstValue * SecondValue;

}

DefaultValue(3);

Iz ovog primera se vidi da broj ulaznih parametara funkcije nije isti broju parametara naredbi u kojoj se poziva funkcija. Oni parametri koji nedostaju uzimaju osnovne vrednosti, definisane unapred. Kod klasičnog definisanja funkcija AS3.0 prijavljuje grešku ako ovi parametri nisu isti.

Primena funkcija olakšava programiranje, razdvaja delove programskog koda na pregledne celine i omogućava nam da izvršimo zadatke koji su nekada neizvodljivi linijskim programiranjem. Za svako ozbiljnije programiranje neophodna je primena funkcija, a radi lakšeg razumevanja, potrudite se da nazive funkcija izaberete tako da Vam ukazuju jasno čemu one služe. Pošto u nazivu funkcije nije dozvoljeno prazno mesto, preporuka je da koristite velika slova za početke reči ili donju crtu za razdvajanje reči u nazivu. Bez obzira kako se Vama sviđa da imenujete nazive i funkcija i promenljivih, potrudite se da se pridržavate nekog pravila, jer ako treba kasnije da radite promene koda, mnogo će Vam biti lakše ako poštujete neka pravila.

 

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

окт 292014
 

FLASH MAHER

 

Adobe Flash Professional – Univerzalna knjiga

ACTION SCRIPT 3.0

 

OPERATORI I USLOVNE NAREDBE

 

FLASH MAHER – OPERATORI I USLOVNE NAREDBE

 

Operatori su najčešće simboli na primer +, -, *, /, =, a mogu biti i reči. Služe nam za rad sa podacima, definisanje svojstava, karakteristika…

Spisak sa opisom svih operatora može se naći u pratećoj dokumentaciji, koja je ugrađena u Flash, i do nje se može doći klikom na ‘Help’.

 

Primarni operatori:

  • [ ] – inicijalizuje t.j. formira niz
  • { x : y } – inicijalizuje objekat
  • ( ) – grupni izrazi
  • f(x) – poziva funkciju
  • new – poziva konstruktor
  • y i x[y] – pristup osobini
  • <> I </> – inicijalizuje XML objekt (E4X)
  • @ – pristup atributima (E4X)
  • :: – kvalifikuje ime (E4X)
  • .. – pristup potomku XML elementa (E4X)

 

Unarni operatori:

  • :: – kvalifikuje ime (E4X)
  • + – unarno plus
  • – – unarno minus
  • ! – logičko NOT
  • ~ – nad bitovima NOT
  • delete – briše osobinu
  • typeof – vraća tip informacije
  • void – vraća nedefinisanu vrednost
  • ++ – unarno povećava vrednost za 1
  • — – unarno umanjuje vrednost za 1

 

Objašnjenje za ++ i –:

var NewId:Number = 0;

trace(++ NewId); // 1

trace(NewId); // 1

 

Postfiks operatori:

Postfiks operatori porasta ili smanjenja vrednosti se izvršavaju posle operacija:

  • ++ – povećava vrednost za 1
  • — – smanjuje vrednost za 1

var NewId:Number = 0;

trace(NewId ++); // 0

trace(NewId); // 1

 

Operatori multiplikacije:

  • * – množenje
  • / – deljenje
  • % – vraća ostatak pri deljenju – modul

 

Operatori dodavanja:

  • + – sabiranje
  • – – oduzimanje

 

Operatori nad bitovima:

  • << – pomeranje bitova ulevo
  • >> – pomeranje bitova udesno
  • >>> – nenegativno pomeranje bitova desno

 

Operatori upoređivanja:

  • < – manje od
  • > – veće od
  • <= – manje ili jednako od
  • >= – veće ili jednako od
  • as – proverava tip podatka
  • in – proverava osobine objekta
  • instanceof – proverava tip instance
  • is – proverava tip podatka

 

Operatori jednakosti:

  • == – jednako sa
  • != – različito od
  • === – striktno jednako
  • !== – striktno različito

 

Operatori nad bitovima:

  • & – logičko AND
  • ^ – logičko XOR
  • | – logičko OR

 

Logički operatori:

  • && – logičko AND
  • || – logičko OR

 

Uslovni operator:

  • ?: – Ovo je skraćeni operator niza naredbi:

if(question) { code_1} else { code_2}

Piše se u obliku:

SomeNumber > 0 ? trace(“it is > 0”): trace(“it is not > 0”);

 

Operatori dodeljivanja:

  • = – dodeljivanje vrednosti
  • *= – množenje svoje vrednosti novom i dodeljivanje vrednosti sebi
  • /= – deljenje svoje vrednosti novom i dodeljivanje vrednosti sebi
  • %= – modul svoje vrednosti novom i dodeljivanje vrednosti sebi
  • += – sabiranje svoje vrednosti novom i dodeljivanje vrednosti sebi
  • -= – oduzimanje svoje vrednosti novom i dodeljivanje vrednosti sebi
  • <<= – logička operacija nad bitovima ulevo
  • >>= – logička operacija nad bitovima udesno
  • >>>= – logička nenegativna operacija nad bitovima udesno
  • &= – logičko AND
  • ^= – logičko XOR
  • |= – logičko OR

 

Operator ‘.’ se koristi za dodeljivanje osobina objektima, pristupanje podacima klasama i razdvajanje pri importovanju paketa i klasa.

Operator ‘,’ se koristi za razdvajanje podataka.

Operator ‘:’ se koristi za definisanje tipa podataka, dodeljivanje tipa podatka parametrima funkcija ili označavanje povratnih informacija funkcija.
Uslovne naredbe u AS3.0 nam omogućavaju da izvršavamo željene delove koda. Najčešća uslovna naredba je ’if( question ) { /* code */ }’ sa prikazanom sintaksom. Najzastupljeniji operatori koji se koriste u uslovnim naredbama su: == (služi za upoređenje – razlikovati od dodeljivanja vrednosti jednog simbola =), != (različito), <, >, <=, >=, && (logičko AND), || (Logičko OR) i !(Logičko NOT).
Postoji nekoliko osnovnih modela korišćenja uslovnih naredbi. Za sve je zajedničko da se iskaz – pitanje nalazi u okviru malih zagrada ( ), a blok koda koji se izvršava dok (ako) je uslov ispunjen se nalazi u okviru velikih zagrada { }.

  • Naredba ‘if’, predstavlja osnovnu naredbu grananja i odgovara pitanju ‘ako je’. Ako je iskaz u okviru malih zagrada tačan, izvršava se naredni blok koda u okviru velikih zagrada (može i kod bez velikih zagrada, kada se izvršava naredni iskaz). Ako iskaz nije tačan navedeni kod se preskače.

if(x == 2) { trace(“True!”); }

U slučaju da nije iskaz tačan moguće je izvršiti blok koda kada je iskaz netačan naredbom ‘else’ posle koje opet sledi blok koda u okviru velikih zagrada ili jedan iskaz bez zagrada.

else { trace(“False!”); }

U slučaju da želimo novi upit odmah nakon netačnog iskaza ‘if( )’, možemo da iskoristimo jedan iskaz bez zagrada i ponovo upotrebimo naredbu ‘if’ tako da naredba izgleda kao ‘else if’, koja se svodi na osnovnu naredbu ‘if’.

else if(x == 3) trace(“x = 3”);

Skraćeni oblik koji se ponekad može iskoristiti za jedan kod ‘if else’ je objašnjen u odeljku uslovni operator ‘?:’.

  • Naredba ‘switch’ je usavršena naredba ‘if’, koja menja više uzastopnih naredbi ‘if else’ ali na pregledniji način. Jedno pitanje – iskaz, može da ima više mogućnosti na osnovu kojih treba izvršiti odgovarajući blok koda. Posle naredbe ‘switch’ se u okviru velikih zagrada navode mogući slučajevi naredbom ‘case’ posle koje sledi blok koda koji se završava naredbom ‘break’. Ako se nijedan od slučajeva ne zadovolji izvršava se blok koda posle naredbe ‘default’ koji se takođe završava sa ‘break’. To može da se predstavi kodom:

var NowDate:Date = new Date();

var DayId:uint = NowDate.getDay();

switch(DayId) {

case 1:

trace(„Monday“);

break;

case 2:

trace(„Tuesday“);

break;

case 3:

trace(„Wednesday“);

break;

case 4:

trace(„Thursday“);

break;

case 5:

trace(„Friday“);

break;

case 6:

trace(„Saturday“);

break;

case 0:

trace(„Sunday…“);

trace(„It’s my favorite day!“);

break;

default:

trace(„Error!“);

break;

}

  • Naredba ‘while’ predstavlja naredbu grananja, koja programu nalaže da izvršava naredni blok koda u okviru velikih zagrada dok se ne ostvari ispunjenje uslova – iskaza.

var Id:int = 0;

var MaxId:int = 10;

var Sum:int = 0;

while(Id < MaxId) {

Id ++;

Sum += Id;

}

trace(“Sum=” + Sum);

Dodatak naredbi ‘while’ je naredba ‘do’, koja obezbeđuje da se blok koda izvrši jednom obavezno.

var Id:int = 0;

do {

Id ++;

trace(Id);

}

while (Id < 10);

  • Niz naredbi za elegantno kodiranje programskih petlji naredbom ‘for’ je sledeći:

for(var Id:int = 1; Id <= 10; Id ++) {

trace(Id);

}

Mogući su i drugačiji slični oblici kodiranja ‘for in’:

var PointObject:Object = {x:123, y:456};

for(var IndexName:String in PointObject) {

trace(IndexName + „: “ + PointObject[IndexName]);

}

Za rad sa ‘XML’ podacima koristi se ‘for each in’:

var myXML:XML = <Store>

<Day>Monday</Day>

<Day>Tuesday</Day>

<Day>Wednesday</Day>

<Day>Thursday</Day>

<Day>Friday</Day>

<Day>Saturday</Day>

<Day>Sunday</Day>

</Store>;

for each(var Item in myXML.Day) { // .

trace(Item);

}

trace(„—————„);

for each(var Day in myXML..Day) { // ..

trace(Day);

}

 

Primer 1. Sređivanje niza!

 

Niz od 10 slučajnih celih brojeva od 0 do 99 srediti u rastući.

Rešenje: Metoda 1.

// Create random array

var RandomArray:Array = new Array();

for(var Numer:int = 1; Numer <= 10; Numer ++) {

RandomArray[Numer] = int(Math.random() * 99.99);

trace(„Random number “ + String(Numer) + “ is: “ + String(RandomArray[Numer]));

}

// Arange array

for(var I1:int = 1; I1 <= 9; I1 ++) {

for(var J1:int = I1; J1 <= 10; J1 ++) {

if(RandomArray[I1] > RandomArray[J1]) {

var OldValue:int = RandomArray[I1];

RandomArray[I1] = RandomArray[J1];

RandomArray[J1] = OldValue;

}

}

}

// Print correct array

trace(„—————————————„);

for(Numer = 1; Numer <= 10; Numer ++) {

trace(„Ok number “ + String(Numer) + “ is: “ + String(RandomArray[Numer]));

}

 

Rešenje: Metoda 2.

var RandomArray:Array = new Array();

for(var Numer:int = 0; Numer <= 9; Numer ++) {

RandomArray[Numer] = int(Math.random() * 99.99);

}

trace(RandomArray);

// Bubbles method

var WorkAgain:Boolean = true;

while(WorkAgain) {

WorkAgain = false;

for(var I1:int = 0; I1 <= 8; I1 ++) {

if(RandomArray[I1] > RandomArray[I1 + 1]) {

var OldValue:int = RandomArray[I1];

RandomArray[I1] = RandomArray[I1 + 1];

RandomArray[I1 + 1] = OldValue;

WorkAgain = true;

}

}

}

trace(„—————————————„);

trace(RandomArray);

 

Rešenje: Metoda 3.

var RandomArray:Array = new Array();

for(var Numer:int = 0; Numer <= 9; Numer ++) {

RandomArray[Numer] = int(Math.random() * 99.99);

}

trace(RandomArray);

// Command

RandomArray.sort(Array.NUMERIC);

trace(„—————————————„);

trace(RandomArray);

 

Postoje i gotove naredbe za sređivanje alfanumeričkog niza po azbučnom redosledu u rastući (Array.CASEINSENSITIVE) ili opadajući (Array.DESCENDING). Primeri se mogu naći u odeljku Help. Unesite u polje za ’Search’ reč ’Array’ i izaberite stranu gde je nađeno ’Array’ kao glavna reč i videćete moguće naredbe za nizove i metode sa gotovim primerima.

Međutim, ovde smo rezultate ispisivali naredbom ’trace’ koja nam daje ispis u prozoru OUTPUT. Ovaj prozor nije vidljiv na WEB-u, niti u Flash Player-u. On samo služi za prikazivanje rezultata u fazi testiranja programa, dok se pravi aktivni prikaz kroz Flash Player radi korišćenjem klasa ili komponenata. Klasa koja služi za prikaz svih statičkih i dinamičkih tekstova, kao i tekstova koji se unose je ’TextField’. Kreiranjem AS3.0 kodom birate ime, i način prikaza ovog polja. Flash Vam nudi standardan prikaz sa formatiranjem teksta i polja gde se tekst prikazuje, upotrebu osnovnih HTML tagova i upotrebu CSS-a (Cascading Style Sheets).

 

Primer 2. Prikaz teksta na ekranu!

 

Primer: Metoda 1.

import flash.text.*;

import flash.filters.*;

/* Comments

TextFormat(font:String = null, size:Object = null, color:Object = null, bold:Object = null, italic:Object = null, underline:Object = null, url:String = null, target:String = null, align:String = null, leftMargin:Object = null, rightMargin:Object = null, indent:Object = null, leading:Object = null)

Comments */

var NewTextFormat:TextFormat = new TextFormat(„Geogia“, 50, 0xff0000, true, false, false, null, null, TextFieldAutoSize.CENTER);

var ExampleTextField:TextField = new TextField();

ExampleTextField.x = ExampleTextField.y = 100;

ExampleTextField.width = 300;

ExampleTextField.height = 200;

ExampleTextField.background = true;

ExampleTextField.backgroundColor = 0x888888;

ExampleTextField.defaultTextFormat = NewTextFormat;

ExampleTextField.text = „Example…\nNew row…“;

stage.addChild(ExampleTextField);

 

Primer: Metoda 2.

import flash.display.*;

import flash.text.*;

var NewTextExample:TextField = new TextField();

NewTextExample.x = NewTextExample.y = NewTextExample.width = NewTextExample.height = 100;

NewTextExample.background = true;

NewTextExample.backgroundColor = 0x888888;

NewTextExample.wordWrap = true;

NewTextExample.htmlText = „<P ALIGN=’LEFT’><FONT FACE=’Times New Roman’ SIZE=’14’ COLOR=’#ff0000′ LETTERSPACING=’2′><b>Lorem ipsum dolor sit amet.</b></FONT></P>“;

stage.addChild(NewTextExample);

 

Primer: Metoda 3.

import flash.display.*;

import flash.text.*;

var CssTextField:TextField = new TextField();

CssTextField.x = CssTextField.y = 10;

CssTextField.background = true;

CssTextField.backgroundColor = 0xff0000;

CssTextField.multiline = true;

CssTextField.autoSize = TextFieldAutoSize.LEFT;

stage.addChild(CssTextField);

var CssData:String = „p { font-family: Times New Roman, Times, _serif; font-size: 14; color: #000000; font-Style: italic; margin-left: 10; }“;

CssData += „h1 { font-family: Arial, Helvetica, _sans; font-size: 20; color: #FFFFCC; font-weight: bold; } .bluetext { color: #0000CC; }“;

var CssStyleSheet:StyleSheet = new StyleSheet();

CssStyleSheet.parseCSS(CssData);

CssTextField.styleSheet = CssStyleSheet;

CssTextField.htmlText = „<h1>This is a headline</h1><p>This is a line of text.<br/><span class=’bluetext’>This line of text is colored blue.</span></p>“;

var Style:Object = CssStyleSheet.getStyle(„h1“);

CssTextField.htmlText += „<p>Headline font-family is: “ + Style.fontFamily + „</p>“;

CssTextField.htmlText += „<p>Headline color is: “ + Style.color + „</p>“;

 

Pored ovih metoda moguće je i bez programiranja postići ove efekte, primenom panela alata, menija i prozora ’Properties’. Uz pomoć njih se može direktno na ’stage’ dodati ’TextField’ i aranžirati po želji. ’TextField’ na ’stage’ se dodaje pomoću panela alata klikom na opciju ’TextTool’ te na ’stage’ gde želite da se pojavi ovo polje.

Kao što se iz priloženog vidi, u Flash-u je moguće na razne načine uraditi istu stvar. Na nama je da izaberemo metodu kojom dolazimo do rešenja.

Sve što se pojavljuje na ekranu, pomoću AS3.0 moguće je naknadno izmeniti, dodati filtere, osluškivače… Flash nam nudi da kroz kod dodamo osluškivače, u zavisnosti od kojih se izvršavaju odgovarajuće funkcije – akcije. Postoje razne vrste osluškivača koji startuju neku funkciju kada se desi predviđeni događaj. Događaji mogu biti vezani za: tastaturu, miša, vreme, učitavanja, greške… Primenljivi su na jednostavan način, a kada ih savladate, moći će te da unesete živost u svoje programe.

 

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

окт 282014
 

FLASH MAHER

 

Adobe Flash Professional – Univerzalna knjiga

ACTION SCRIPT 3.0

 

OSNOVNI PODACI

 

FLASH MAHER – OSNOVNI PODACI

 

U AS3.0 postoje promenljivi i kostantni podaci. Njihovo obeležavanje je logično: ’var’ i ’const’, a i upotreba je prema nazivu predviđena – konstante možete definisati samo jednom u toku izvršavanja programa. Za svaki podatak u programiranju je predviđeno da se sastoji iz 3 različita dela:
1. Ime podatka – počinje uglavnom na slovo
2. Tip podatka – definiše ostale njegove osobine
3. Trenutna vrednost – zapisuje se u memoriji
Najvažniji tipovi podataka koje morate razumeti su: String, int, Number, uint i Boolean.
Tip ’String’ formira alfanumeričku promenljivu koja je predstavljena kao niz karaktera.
var NewString:String = „Example…“;
Tip ’int’ formira promenljivu tipa Integer – celobrojnu 32-bitnu vrednost sa rasponom od -2 ↑ 31 do 2 ↑ 31 – 1 (-2.147.483.648 do 2.147.483.647).
var FirstIntegerNumber:int = 237;
var SecondIntegerNumber:int = -123.456;
Tip ’Number’ formira numeričku promenljivu opsega od približno 4.94 * e ↑ -324 do skoro 1.8 * e ↑ +308 (sa ’e’ se zapisuju brojevi u eksponencijalnom obliku t.j. e=10). U AS3.0 se koristi decimalna tačka ’.’ a ne zarez ’,’ kada se radi sa decimalnim brojevima.
var FirstNumber:Number = 3.456;
var SecondNumber:Number = -1.234e10;
const ConstantNumber:Number = 3.14;
Tip ’uint’ formira celobrojnu pozitivnu promenljivu u 32-bitnom zapisu sa rasponom od 0 do 2 ↑ 32 – 1 (4294967295).
var PositiveNumber:uint = 456;
Najčešća upotreba ovog tipa promenljive je za definisanje boja u heksadecimalnom zapisu kao ARGB zapis (Alpha, Red, Green, Blue su vrednosti od 0-255 tj. od 00-ff).
var ColorNumber:uint = 0xff3377aa;
Tip ’Boolean’ formira logičku promenljivu koja ima vrednost ’true’ ili ’false’.
var TrueVariable:Boolean = true;
var FalseVariable:Boolean = false;
Pored ovih osnovnih tipova podataka, naredbom ’var’ možete da definišete ogroman broj podataka. Flash podržava rad sa nizovima, vremenskim podacima, xml zapisom, objektima, grafikom, muzikom, videom…
var NewArray:Array = [1, 2, 3];
var FirstNumberFromArray:int = NewArray [0];
Iz ovog primera se vidi da se za odabir članova niza koriste uglaste zagrade ’[’ i ’]’, dok male zagrade ’(’ i ’)’ i velike zagrade ’{’ i ’}’ imaju drugačiju primenu.
Ja sam se oduševio specijalnom osobinom koju nam nudi AS3.0 kada je reč o nizovima (indeks niza može biti i string):
NewArray [„SomeString „] = „YourChoice“;
Još neki primeri podataka:
var CurrentTime:Date = new Date();
var CurrentYear:int = CurrentTime.fullYear;
var XmlData:XML = 1.23;
var ValueFromXmlData:Number = XmlData.SomeNumber;
var MyObject:Object = new Object();
Objekti su srce AS3.0. Sve što kreiramo, svaka promenljiva, svaka funkcija, svaka klasa i bilo šta drugo može biti objekt. Može se tumačiti i da pri prikazivanju sadržaja prikazujemo razne tipove objekata.
var DataForAll:* = 3.45;
var DataForAll:* = true;
Znak ’*’ menja bilo koji tip podatka. Ovaj opis podataka je koristan kada se radi sa nizovima.
Kada neki podatak nije definisan, AS3.0 pri pozivanju istog daje osnovnu vrednost toga podakta. U narednoj tabeli su prikazane osnovne vrednosti podataka:

 

Vrsta podatka Osnovna vrednost
String null
int 0
Number NaN
uint 0
Boolean false
Object null
Nedefinisan podatak undefined
Ostale klase null

 

Često se javlja potreba da ispitamo da li član niza postoji, pa moramo da znamo kako to da utvrdimo.
Ključne reči i rezervisane reči se ne mogu koristiti za definisanje imena podataka, već samo na neki od načina koji je predviđen. U ovu grupu reči spadaju: as, break, case, catch, class, const, continue, default, delete, do, dynamic, each, else, extends, false, final, finally, for, function, get, if, implements, import, in, include, instanceof, interface, internal, is, namespace, native, new, null, override, package, private, protected, public, return, set, static, super, switch, this, throw, to, true, try, typeof, use, var, void, while i with. Neke od ovih reči AS3.0 dopušta za korišćenje za definisanje podataka na primer ‘each’, ali se preporučuje da se i one ne koriste za imena podataka.
Postoji i grupa rezervisanih reči koje takođe treba izbegavati za davanje imena podacima. To su: abstract, boolean, byte, cast, char, debugger, double, enum, export, float, goto, intrinsic, long, prototype, short, synchronized, throws, to, transient, type, virtual i volatile. Neke od njih su već predviđene za namenu u narednim izdanjima programa.

 

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

окт 282014
 

FLASH MAHER

 

Adobe Flash Professional – Univerzalna knjiga

ACTION SCRIPT 3.0

 

UVOD

 

FLASH MAHER – UVOD

 

Kao što mi razumemo svoj jezik, i kompjuter razume svoj jezik. Cilj programiranja je da napišemo program – kod pomoću koga možemo da prenesemo ono što je nama jasno na našem jeziku, na jezik koji razume računar. Program je niz instrukcija koje računar traba da sprovode. Adobe Flash Professional koristi programski jezik ActionScript 3.0.
ActionScript 3.0 ima pravila koja su veoma lako prihvatljiva. Veoma je sličan engleskom jeziku, ali pošto kompjuter nema mozak kao čovek, da bi program radio onako kako mi želimo, mora se poštovati predviđena sintaksa. Adobe je ugradio nekoliko vrsta pomoći pri pisanju programa – koda, kao i prozore za ispis grešaka (COMPILER ERRORS), izlaznih vrednosti po želji (OUTPUT) i otklanjanje neispravnosti (DEBUG CONSOLE). Sve ovo Vam pomaže da stalno testirate i ispravljate sintaksne greške, a i greške u programiranju u hodu, dok Vam program napreduje. Zato stalno testirajte delove programa koje dodajete, jer se tako lakše otklanjaju moguće greške.

Kako se započinje stvaranje programa u Flash-u? Startovanjem na ikonu Flash.exe otvara se prozor u kome birate šta želite da radite u Flash-u. Za početak izaberite New Document sa ikonom ’Fl’ Action Script 3.0, koji Vam otvara okruženje u kome možete i da dizajnirate – crtate ili animirate na pozornici ’stage’ i da programirate u prozoru u kome se piše AS3.0 kod. Da bi programirali morate da aktivirate (ako nije aktiviran) prozor ’ACTIONS – FRAME’, koji se aktivira pritiskom na ’F9’ ili iz glavnog menija na Window > Actions. Na Window se aktiviraju/deaktiviraju i svi ostali prozori koji Vam pomažu u radu, koje možete razmestiti po ekranu kako Vam odgovara. Kada naučite razmeštanje ovih prozora i dođete do zaključka koji Vam raspored – radni prostor najviše odgovara, možete da snimite ovaj radni prostor na Window > Workspace > New Workspace… i zadate mu ime koje želite. Ovo ime će se pojaviti u listi Window sa ostalim radnim prostorima koje Flash nudi (na primer Developer, Animator, Classic i slično).

Dok kreirate u Flash-u vi stvarate program sa ’.fla’ ekstenzijom, i kada snimite svoj program, snima se sa tom ekstenzijom. Ovaj tip fajla zapisuje sve što radite, i animacije i podešavanja i kod, i omogućuje Vam ispravke svega, a njegovim startovanjem se stvara automatski fajl sa ’.swf’ ekstenzijom koji se reprodukuje kroz Flash Player. Startovanje programa ili testiranje se izvršava kada u glavnom meniju kliknete na Control > Test Movie (in Flash Professional) ili (Control + Enter).
Pisanje koda u AS3.0 nije za podcenjivanje. Nije dovoljno samo poznavati sintaksu i pravila, već morate svoju zamisao sprovesti od samog pisanja koda, preko organizacije i povezivanja svih delova u jednu celinu, do objavljivanja krajnjeg rešenja koje se na odgovarajući način izvršava. Kod se unosi u panelu Actions, koji važi za frejm ‘frame’ koji je trenutno selektovan, ili u posebnom prozoru za pisanje AS3.0 koda, o čemu će biti reči kasnije. Svaki frejm može imati svoj kod, koji se izvršava kada prikaz filma koji Flash reprodukuje dođe do njega. Flash Vam nudi kontrolu izvršavanja frejmova uz pomoć naredbi: stop(), gotoAndStop(frame), gotoAndPlay(frame) i druge.
Actions panel je prilagodljiv Vašim potrebama i sastoji se iz vise delova:
– Panel alata (Toolbox) sadrži listu svih metoda, svojstava i događaja koji su organizovani u direktorijume.
– Prozor za izbor skripte sadrži prikaz scena i simbola i nudi nam prečicu ka izboru nosioca skripte.
– Meni sa opcijama služi za formatiranje Actions panela.
– Čarobni štapić, skript asistent i dugme ‘Help’ (pomoć) su veoma korisni za nalaženje gotovog koda i raznih objašnjenja.
– Pomoćne ikone služe za ostvarivanje raznih pomoći (dodavanja koda, pretrage, nalaženja mete, provere sintakse, auto formatiranja, traženja grešaka, sažimanja, komentarisanja i slično).

Na početku će biti dovoljno automatsko prepoznavanje koda koje je ugrađeno u Flash, a vremenom se opcije jedna po jedna razjašnjavaju.
Prilikom korišćenja posebnog prozora za pisanje AS3.0 koda, kada selektujete umesto otvaranja ‘.fla’ dokumenta samo ‘ActionScript File’ koji stvara ekstenziju ‘.as’, rad je ekvivalentan kao sa Actions panelom, s tim da se ovako kodirani fajl snima kao posebni tekstualni podatak, i mora specijalno i da se pozove da bi se izvršio. ‘As’ fajl može da se edituje bilo kojim tekstualnom editorom, i on je veoma bitan jer nam pomaže u stvaranju objektnog programiranja i rasterećivanja glavnog programa na manje delove radi lakše kontrole i preglednosti. ‘As’ fajlovi se kompajliraju automatski u konačni ‘swf’ fajl, tako da ne moraju da se uploaduju na hosting, već služe samo pri pravljenju glavnog ‘swf’ fajla.
AS3.0 ima pravila – sintaksu koja se mora poštovati kada se piše kod. Najmanji problem je ako napravite sintaksnu grešku, jer pri testiranju programa Flash najpre proverava sintaksu, i ako greške postoje ispisuje izveštaj, sa brojem redova u kojima se nalaze greške.
AS3.0 se sastoji od niza izjava, koje stvaraju određene akcije. Najčešće se piše jedna izjava u jednom redu, i na kraju izjave stoji znak ’;’.
Kada je potrebno ubacite komentare u svoj kod uz pomoć ’//’ za jedan red ili ’/*…code…*/’ za komentare delova koda u jednom ili u više redova.
// This is comment
/* And this is comment…
…multi line comment.*/

 

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

окт 282014
 

FLASH MAHER

 

Adobe Flash Professional – Univerzalna knjiga

ACTION SCRIPT 3.0

 

Adobe Flash Professional Education

 

Kompanija Adobe je dugogodišnji globalni lider u oblasti digitalnih medija i marketinških rešenja. Gotovo da ne postoji osoba koja se makar malo razume u kompjutere i programiranje, a da ne zna ništa o firmi Adobe i da nikada nije koristila bar neki od programskih paketa koje Adobe nudi. Od samog početka Adobe programski paketi su se pokazali kao pouzdani, laki za učenje, korišćenje i primenu, tako da su postali glavni standardi kompjuterske industrije. Uz pomoć njih korisnici mogu da kreiraju i objavljuju različite sadržaje i da unovče svoj rad na skoro svim platformama i uređajima. Oblast primene paketa koje nudi Adobe je veliki. U njegovom asortimanu se nalaze programi za obradu teksta, grafike, zvuka, video materijala… Adobe veliku pažnju poklanja inovacijama i stalno unapređuje postojeća rešenja i objavljuje nove programske pakete…

Glavni programski paket za programiranje firme Adobe je Adobe Flash Professional koji prati najnovija dostignuća u programiranju, i jedan je od najomiljenijih programskih paketa u svetu programiranja. U okviru Adobe Flash Professional programskog paketa možete i dizajnirati i programirati, uvoziti i izvoziti, primati i prosleđivati podatke, povezivati se sa drugim programskim jezicima… Adobe Flash Professional podržava i tekst i grafiku i audio i video sadržaj, tako da je moguće napraviti kompleksne animacije za razne primene (prezentacije, učenje, video igre i skoro sve što Vam padne na pamet). Sve je moguće povezati u jednu celinu, a na Vama je da izaberete gde će se Vaš program izvršavati, način rada, karakteristike… Za reprodukciju sadržaja koji se formira programom Adobe Flash Professional koristi se neki ’plugin’ – dotatak: Adobe Flash Player ili Adobe Shockwave Player. Ovi dodaci mogu da reprodukuju sadržaj i na WEB pregledačima (Mozzila, Google Chrome, Internet Explorer i skoro svim ostalim), a reprodukcija je podržana i za Windows, Linux i Macintosh. Skoro svaki računar (preko 99%) širom sveta ima instaliran dodatak za prikazivanje Flash sadržaja, a i skoro svi kvalitetniji mobilni telefoni imaju ovu mogućnost.
S obzirom na to da je moguća ogromna primena ovog programa, zbog sigurnosti korisnika su namerno ograničene neke njegove mogućnosti, jer reprodukcija nakon instaliranog dodatka na WEB pregledačima radi direktno bez instaliranja svakog programa posebno. Koristeći Action Script 3.0 možete isprogramirati skoro sve što se može programirati u bilo kom drugom programskom jeziku, a Adobe Flash Professional nam nudi spajanje nespojivog za mnoge programske jezike, uz pomoć programskog jezika Action Script 3.0. Action Script 3.0 prevazilazi mogućnosti verzija 1.0 i 2.0 jer se zasniva na OOP – objektno orijentisanom programiranju, ima mnogo novih osobina i poboljšanja, i izvršava se desetina puta brže nego prethodne verzije.

Action Script 3.0 (AS3.0) se izvršava u novoj virtualnoj mašini AMV2, koja je deo plugin-a. Da bi se izvršavao program pisan za Adobe Flash Professional, AS3.0 kod se kompajlira u ’Bytecode’ – vrsta programskog jezika razumljivog računaru. ’Bytecode’ se pridružuje ’swf’ fajlovima koje odgovarajući plugin izvršava. Swf fajl je taj koji nas najviše interesuje, jer je on konačni produkt koji se izvršava, i obeležava se sa ekstenzijom ’.swf’ (’.swf’ je fajl ekstenzija Shockwave Flash format datoteke kreirana od strane firme Macromedia, a sada u vlasništvu firme Adobe). Swf je skraćenica od Small Web Format – mali veb format, što je veoma važna karakteristika swf fajlova – zauzimaju malo memorije – brzo se učitavaju, a samim tim brzo i startuju. Swf fajlovi mogu sadržati tekst, grafiku, zvuk i video i dizajnirani su za efikasnu upotrebu preko interneta. AS3.0 sprovodi ECMAScript za XML (E4X), od skora standardizovan kao ECMA-357. Ovaj standard ima cilj da pruži alternativu DOM3 interfejsima (Document Object Model Level 3) koji obezbeđuje standardni način generisanja i rukovanja porukama izazvanim raznim događajima. Za nas je za sada samo važno da znamo da formiramo fajl sa ‘.swf’ ekstenzijom (Flash to radi automatski kada se startuje testiranje ili objavljivanje programa), i da ugradimo ovaj fajl kasnije u HTML kod (i to može automatski da se podesi).
Action Script 3.0 je jedan od najobimnijih programskih jezika, ali neka Vas to ne uplaši. API (application programming interface) je tako lepo organizovan da je moguće pisati program skoro kao da pišete engleskim jezikom, a da ne primećujete da se radi o programu. Svaki delić ovog programskog jezika je detaljno objašnjen u svakom izdanju programa Adobe Flash Profesional u odeljku Help, sa tekstualnim i tabelarnim objašnjenjem skoro svih mogućnosti koje su predviđene u toj verziji, kao i razlikama u odnosu na prethodne verzije. Veoma je teško izbrojiti koliko ukupno naredbi ima ovaj programski jezik. Za svaku naredbu su pregledno prikazane njene osobine, a za veliki broj naredbi, pored objašnjenja mogu se naći i gotovi primeri, koje možete koristiti u svom kodu. Sve je izvanredno organizovano i po azbučnom redosledu, i po grupama koje mogu da Vam olakšaju nalaženje naredbi i delova koda koji su Vam potrebni za rešavanje nekog problema, a na internetu se mogu naći i primeri koda i gotovi tutorijali sa kompletnim fajlovima, koji ponekad uključuju i video prikaze celog postupka pravljenja programa. U najnovijim verzijama je dodat i asistent za pisanje koda, koji Vam pomaže u pisanju koda kada to poželite. Veoma bitna karakteristika programa Adobe Flash Professional je i posedovanje dotatka za pronalaženje grešaka (Debug). Ovaj dodatak ne samo da vam kaže o kojoj se grešci radi, i u kom redu se nalazi, već omogućava i celokupno praćenje svih vrednosti promenljivih koje se javljaju u programu u svakom trenutku vremena i još mnogo toga.
Jedan od najvećih nedostataka ovog programa je nepotpuna kompatibilnost sa SEO optimizacijom – sadržaji koji se prikazuju nisu vidljivi najpopularnijim pretraživačima (Google, Yahoo, Bing i drugi), tako da se retko ko od programera odlučuje da ceo sajt pravi reprodukcijom kroz Flash Player, već se odlučuju da se većina sadržaja prikazuje kroz HTML kod, kroz koji se poziva i dodatak za reprodukciju.

Ova knjiga je pisana tako da Vas dovede do znanja za savladavanje najnaprednijih zadataka iz programiranja, i podrazumeva da ste savladali osnovno znanje o korišćenju vremenske linije (Timeline), frejmova (Frames), lejera (Leyers), simbola (Symbols), pozornice (Stage), prozora panela i palete alata.

 

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

јул 142014
 

Faze u razvoju aplikacija za android!!!

Napraviti neku aplikaciju, igricu ili program za uređaje koji rade pod android operativnim sistemom nije lako, ali kada to uradite tek Vas onda čeka još mnogo posla. Tu treba obratiti pažnju na mnogo stvari, od samog stvaranja ideje šta da se uradi, pa do pronalaženja korisnika koji će koristiti Vašu aplikaciju. Da bi ostvarili svoj cilj – zaradu, popularnost ili nešto drugo, morate dobro razmisliti kako do njega doći. Vaša aplikacija mora proći kroz mnogo faza dok ne stigne do krajnjeg korisnika, i svaka faza u razvoju ako nije urađena kako treba može da bude pogubna po konačni rezultat Vašeg rada. Do zastoja u uspešnosti Vaše aplikacije može doći i zbog najmanje sitnice, koja ne mora biti greška već blagi previd ili propust.

Da bi ostvarili svoj cilj i izbegli, lakše otklonili i revidirali bilo koju nepravilnost tokom izrade Vaše aplikacije, razvojni put svake aplikacije treba podeliti na više faza. Neke od najvažnijih faza u nastajanju aplikacije su:
1) Ispitivanje ponude i potražnje – izbor aplikacije
2) Planiranje i izrada aplikacije
3) Izbor metode za monetizaciju
4) Testiranje
5) Objavljivanje
6) Marketing – reklamiranje

1) Još pre nego što se krene u pravljenje aplikacije, potrebno je ispitati ponudu i potražnju. Ovu etapu nikako nemojte zanemariti, jer u suprotnom sav Vaš trud može biti uzaludan. Može se desiti da Vi imate najbolju aplikaciju na Google marketu iz bilo koje oblasti, ali da ste izabrali grupu gde je jednostavno prevelika konkurencija, tako da niko ni ne vidi Vaše delo. Ako u tom slučaju niste stručni u marketingu, vrlo brzo ćete biti veoma razočarani brojem skidanja Vaše aplikacije. Zato, najpre dobro zagledajte kategorije na marketu i probajte razne pretrage za ključne reči koje su važne za Vas. Što su traženije klučne reči to bolje za Vas, ali to je mač sa dve oštrice, jer popularnost ključnih reči nosi sa sobom i jaku konkurenciju. Preporuka je izabrati oblast gde je broj skidanja aplikacija veliki, a mali je broj aplikacija koje koriste željene ključne reči. Naravno podrazumeva se da će Vaše ključne reči biti prihvaćene u marketu gde objavljujete aplikaciju, jer može da se desi i da ne budu…
Najprostija metoda ispitivanja je objašnjena u narednim rečenicama. Ako želite da pravite igru sa automobilima, treba ispitati ključne reči, koje su važne za Vas. U polju za pretragu unesite reč „car“. Rezultati istrage biće toliko veliki, da će biti prikazano 100, 250, 400 ili onoliko aplikacija kokiko Vaš uređaj podržava u izveštaju pretrage. Većina rezultata će u svom imenu imati traženu reč, a broj skidanja svih ponuđenih aplikacija sa rezultata pretrage je veliki. Međutim van ovih aplikacija postoji još mnogo aplikacija koje imaju traženu ključnu reč, ali u rezultatima pretrage nema mesta za njih. Van rezultata pretrage bi posle objavljivanje bila i Vaša aplikacija – nevidljiva u rezultatima pretrage, iako ima ključnu reč koju tražite. Da bi se pojavila u pretrazi, morate se pozabaviti nalaženjem osoba koje će instalirati Vašu aplikaciju nasilno – reklamiranjem, obaveštavanjem, informisanjem… Kako se broj instaliranja Vaše aplikacije povećava, možda se ona i pojavi u pretrazi na kraju liste, a vremenom njena pozicija možda ide i prema vrhu.
Nasuprot ovome ako unesete u pretrazi reč „tablic“, biće izbačeno svega nekoliko aplikacija kore koriste ovu ključnu reč. Iako je njihov broj instaliranja takođe veliki, kada objavite svoju aplikaciju koja ima ovu ključnu reč, i ona će biti pri samom vrhu, jer druge aplikacije ovu reč ne koriste. Zato ko voli ovu igru i traži njeno ime u pretrazi, videće i reklamu Vaše aplikacije, i nadajte se da će da zagleda malo detaljnije šta Vi nudite. U rezultatima pretrage će se naći i druge igre sa kartama, ali Vaša aplikacija će imati lako prednost nad njima jer je Google tako oformio pretragu da pamti posle kog upita se šta instalira. Verovatno će više ljudi posle upita za ključnu reč „tablic“ instalirati tablic, a ne poker ili neku drugu igru sa kartama, pa će i pozicionuranje biti prema tome.
Ovakvim upoređivanjem rezultata pretrage, dobićete korisne informacije o konkurenciji, i na osnovu toga možete da procenite gde je lakše da se uspe u ostvarivanju postavljenih ciljeva.
Dakle odlučivanje o tome šta da se radi nije za zanemarivanje. U ovoj fazi morate uzeti u obzir šta možete, a šta ne možete uraditi pomoću programa kojim želite da napravite aplikaciju, šta je podržano, šta možete da koristite i slično.

2) Planiranje i izrada same aplikacije treba da bude najvažniji posao, i tu zapravo dolazi do izražaja Vaše znanje iz programiranja. Vi treba da predvidite unapred put od početka do kraja pravljenja programa, i sve ostale faze morate da imate u malom prstu, jer tokom rada dolazi do raznih ispravki, revizija, novih ideja i nepredviđenih događaja.
Glavni programer (ako se radi o timu) mora da rukovodi celim postupkom, da prihvata ili odbija sugestije svih drugih članova tima. Sam program treba da bude razdeljen na više delova, koji su nezavisni jedan od drugog i mogu da se revidiraju na lak način. Što bolje isplanirate ceo projekat, kasnije revizije će biti lakše…
Još na samom startu treba da isplanirate šta će se sve dešavati u programu, gde i kada će se pojaviti reklame za monetizaciju, kako da naterate ljude da se vrate i ponovo startuju Vašu aplikaciju i još mnogo toga. Poželjno je da postoje rekordi, rejting, nivoi, usavršavanja, ciljevi ili bilo šta drugo što treba da se dostigne ili osvoji, jer to vuče ljude da nastave korišćenje Vaše aplikacije. Unapred predvidite i šta će biti dodavano u narednim verzijama, jer svi vole da se često dešava nešto novo, što treba uraditi.
Izrada aplikacije je oblast sa velikim brojem postupaka, koje možete raditi proizvoljnim redosledom. Važno je da svi ovi postupci mogu lako da se povežu u celinu na kraju i da sve radi lepo i ne opterećuje se uređaj, tako da mu se neka funkcija ne poremeti. Treba uzeti u obzir specijalne situacije koje se dešavaju kada telefon zazvoni, dođe do prijema poruke ili neke slične akcije, koja se kod klasičnog programiranja ne dešava.
Takođe je važno obratiti pažnju na optimizaciju, jer na uređaje sa malom memorijom, zahtevne aplikacije neće da rade, ili rade previše sporo tako da se remeti osnovna funkcija…

3) Osim ako ne želite da sve bude potpuno besplatno i da radite za slavu, pravite propratne aplikacije kao uvod u neku glavnu aplikaciju, ili iz nekog drugog razloga, potrebno je da se odlučite kako da naplatite svoj rad. Možete prodavati celu aplikaciju, razne nadogradnje, ili implementirati reklame besplatno. Ovde govorimo o besplatnim reklamama za krajnje korisnike, poput banera, intersticijskih, audio i video oglasa. Njihovo korišćenje nije komplikovano, i uz malo truda će proraditi i početi da Vam donose cent po cent. Google market ima stroga pravila, i ako ih ne poštujete dobićete e-mail sa upozorenjem da ispravite ono što ste prekršili, a može doći i do gašenja celog naloga, a to nikako ne smete dopustiti da Vam se desi. Zato koristite oglase koje nudi Google – AdMob oglase, i bićete bezbedni makar sa strane oglašavanja. Ovde će se često desiti to da oglasi preporučuju minimalnu verziju operativnog sistema veću od one koja Vam je podešena. Ne dajte prevelikog značaja tome, jer se greške na uređajima sa slabijim operativmim sistemom javljaju u zanemarljivom broju. Greške se mogu javiti i usled nedostatka memorije, oštećenog operativnog sistema i raznih drugih nepredviđenih situacija, i mogu se pratiti na Vašem nalogu. Ako primetite da je Vaš rad uzrok greškama, potrudite se da pronađete uzrok i otklonite ga…

4) Testiranje je faza koju treba odraditi što više ljudi. Svako se ponaša drugačije i svako ide svojim nahođenjem u različitom pravcu. Ispitivanje aplikacije u specijalnim slučajevima može Vam otkriti greške koje morate ispraviti pre nego što objavite konačnu verziju. Posebnu pažnju treba obratiti na ponašanje aplikacije pri startovanju reklama, jer tu dolazi do prekida rada glavnog programa i izvršavanja sekundarnog programa kojim se izvršavaju reklame. Gomila ljudi nema pametnija posla, nego da objavi da su pronašli grešku i naslađuje se tim.
Naročito kada objavljujete revizije, obratite pažnju da se nešto nije poremetilo, i istestirajte ponovo sve što bolje možete. Testirajte ponašanje aplikacije na što više uređaja, sa što više različitih rezolucija. Trudite se da uvek koristite relativne koordinate, jer na primer slika veličine 40×40 piksela na uređaju sa rezolucijom 800×480 može lako da se klikne, ali pri rezoluciji 1920×1080 može predstavljati veliki problem. Zato stavite 5% širine ekrana za ovakav primer i neće biti problema.

5) Objavljivanje aplikacije naizgled je veoma jednostavno, ali ova faza je veoma važna i treba joj obratiti posebnu pažnju. Sve ono što Vam Google nudi i predlaže pokušajte da ispoštujete, jer što više stvari uradite, to ćete biti bolje kotirani kasnije na marketu u kategoriji u kojoj se nalazi Vaša aplikacija, a i u pretrazi po odgovarajućim ključnim rečima.
Najpre snimite reklamne slike tako da budu što izazovnije i privuku korisnike da uopšte i razmotre da li da zagledaju šta nudite. Snimite slike tokom korišćenja aplikacije u svim rezolucijama odnosno za sve tipove uređaja iz marketa.
Obavezno snimite i video koji će predstaviti ono što se nudi u aplikaciji, i pokušajte da to uradite na način tako da zainreresujete posmatrača o Vašoj aplikaciji.
Poželjno je i da imate svoj sajt, čiji link takođe unosite na predviđeno mesto. Iskoristite svoj sajt za detaljnije objašnjenje aplikacije, jer je broj karaktera na marketu ograničen, a i morate da poštujete pravila, i zbog ključnih reči i optimizacije pišete malo drugačije nego što želite, a što na Vašem sajtu nije slučaj.
Tekst u kome se opisuje na marketu šta Vaša aplikacija radi je možda i najbitniji pri objavljivanju. On mora da bude precizno napisan ne samo da objasni o čemu se radi, već i da bude optimizovan tako da aplikaciji budu dodeljene dobre ključne reči. Veoma je korisno pogledati kako je za najbolje aplikacije iz iste oblasti napisan tekst. Na sajtu searchman.com možete videti ključne reči koje se javljaju u tekstovima koje drugi koriste, i na osnovu Vaše procene prilagoditi Vaš tekst tako da se javljaju korisne ključne reči i kod Vas. Nakon nekoliko dana posle objavljivanja, na ovom sajtu možete videti i ključne reči koje su priznate i za Vašu aplikaciju, i onda malo i izmeniti svoj tekst ako za to ima potrebe.
Nemojte preterivati sa ponavljanjem ključnih reči, jer Google ne voli preterivanje, tako da je veoma moguće da u tom slučaju dobijete e-mail sa upozorenjem o izbacivanju aplikacije sa marketa. Takođe i lažna objašnjenja, obećanja i preuveličavanja mogu isprovocirati Google market. Zato budite realni i više pažnje obratite da dobijete željene ključne reči, a ostalo će se srediti kroz marketing…
Prevedite tekst na što više jezika, jer se nikada ne zna iz koje države može biti korisnih korisnika. Ako ste u mogućnosti i u samoj aplikaciji ugradite razne jezike – može biti veoma korisno, jer se u svakoj državi vrši posebno rangiranje aplikacija. Ako ste na prvom mestu u svojoj državi, to ne znači da ste i u ostalim, već se dešava da se i ne pojavljujete u drugim državama u istoj kategoriji bilo gde na listi najpopularnijih aplikacija.
Pratite uputstva koja Vam daje Google o tome šta možete da optimizujete, dodate, popravite ili neki drugi predlog, da bi poboljšali rangiranje Vaše aplikacije u marketu. Izdavanje nove verzije sa isplaniranim i neplaniranim promenama Vam takođe podiže rejting, jer tada mnogi ažuriraju stare verzije, što dovodi do povećanja aktivnosti sa Vašom aplikacijom, a to dovodi do podizanja rejtinga na Google marketu, novih prikaza oglasa i naravno do povećanja zarade. Ali ne treba zloupotrebljavati izdavanje novih verzija, jer može i to biti kažnjeno.
Tek kada pripremite sve što ste isplanirali u početnoj verziji (propratne stranice, video, slike i ostalo) objavite svoju aplikaciju. Nakon prihvatanja Vaše aplikacije od strane Google marketa, bacite se odmah na marketing tj. reklamiranje, jer je period u prvom mesecu od objavljivanja aplikacije veoma bitan.

6) Reklamiranje Vaše aplikacije treba biti urađeno što je moguće kvalitetnije. Jedan čovek može da uradi dosta reklama, ali ako ima podršku, multipliciranjem se informacija mnogo brže prenosi. Zato je potrebno koristiti socijalne mreže i pomoću njih obavestiti što više ljudi. Ne služe socijalne mreže da bi slikali kafu koju pijete ili za neki nebitan događaj, već ih treba iskoristiti upravo za prenos informacija koje Vam mogu biti korisne. Preporuka je da na socijalnim mrežama napravite stranice o Vašoj aplikaciji, sa kojih će ljudi moći da dođu do glavne stranice na marketu gde se nalazi Vaša aplikacija. Google na bolje pozicije po kategorijama postavlja aplikacije koje imaju veći broj skidanja, više plusova, više sviđanja, više komentara…
Iskoristite i postojeće grupe, zajednice i sve moguće srodne stranice gde je slobodno reklamiranje, da i tamo postavite neki tekst sa slikom i linkom gde se skida Vaša aplikacija. Traženje primedbi, komentara, mišljenja, poboljšanja pa i hvaljenje može biti veoma korisno, naročito u zajednicama gde su grupe ljudi koje ih posećuju velike.
Takođe reklamiranje po raznim sajtovima sa forumima može biti korisno, jer i ako Vam administratori uklanjaju objave, poneko vidi ono o čemu pišete.
Veoma je važan silovit start, jer Google market ima veoma posećenu stranicu sa novim aplikacijama, na kojoj su aplikacije starosti do mesec dana, i tu je konkurencija dosta slabija. Ovaj period treba iskoristiti za ostvarivanje što bolje pozicije u svojoj kategoriji za kasnije…
Postoje i sajtovi na kojima Vam nude razne usluge marketinga, ali ako želite da uložite novac u marketing, obratite pažnju i na izbor metode a i na izbor ponuđača usluge, da ne bi uzalud potrošili novac…

Redosled izvršavanja navedenih faza treba da bude kao što je predloženo, ali po svojoj volji i inspiraciji radite kada Vam šta odgovara. Obratite pažnju da ispoštujete što je više moguće preporuka iz gore navedenog teksta.

Pozdravlja Vas VojaMaher

мај 242014
 

Tablic – TABLIĆ – Multiplayer cards game!

Novosti:
‘Online’ mod za više igraca!
Dvoboj – duel za 2 igrača!
Grupni čet! Čet u meču!
Komentator – animirani narator u igri!
Sinhronizovani i animirani lik!
Avatar – kreirajte svoj izgled!
Rejting sistem!
Izaberite svoju zastavu!


Važno obaveštenje!
Od 03.04.2015. možete igrati uživo u ‘multiplayer’ modu ‘online’ sa drugim igračima i sa korisnicima sa android uređajima!
Ako dođe do prevelike gužve, ili potrebe da se plaća server za ‘multiplayer’ igru, plaćaće se simbolična članarina.
Zasada, uživajte besplatno u najpopularnijoj igri sa kartama na Balkanu – Tablić.


Tablic Multiplayar Online

Uživo meč – Tablić

Tablic Multiplayer Android

Uživo meč – Tablić

Tablić ili Tablanet je popularna igra sa kartama, a ovo je sigurno najbolja android Tablić igra.
Cilj je nositi karte sa talona, pošto izbacite kartu iz ruke, čiju vrednost spajate sa kartom iste vrednosti ili sa zbirom izabranih karata na talonu. Igra se sa punim špilom od 52 karte. Ovako igra počinje: svaki igrač dobija po 6 karata a 4 karte se izbacuju na talon. Svaki igrač može da izabere jednu kartu od svojih karata, i spaja njenu vrednust sa vrednošću jedne ili više karata na talonu.

Vrednosti karata:

* K – kralj vredi četrnaest
* Q – dama vredi trinaest
* J – žandar vredi dvanaest
* Ostale karte se vrednuju prema svojim nominalima. A – as može da vredi 1 ili 11, u zavisnosti od procene i želje igrača u igri.

Bodovanje
Na kraju deljenja, svaka desetka, as, žandar, dama i kralj donose jedan poen.
Desetka kocka (karo) vredi dva poena, a dvojka detelina (tref) vredi jedan poen.
Sve ostale karte ne donose poene.
Znači osnovni cilj je da nosite što više štihova: desetka, kec, žandar, dama i kralj i dvojka tref.
Igrač koji je nosio najviše karata dobija tri bonus poena.
Ukupno je 25 poena u igri.

Tabla
Kada igrač odnese sve karte sa talona, tako da talon ostane prazan, on dobija jednu tablu – jedan ekstra poen.

Karakteristike:

– Laki, normalan i teški mod – izaberi inteligenciju svoga protivnika
– Turnir mod – pobedi naše omiljene junake ako možeš
– Nastavi zadnji meč
– Podešavanja – težina, pozadina karata, izgled špila…
– Statistika

YouTubePlay

PlayAppGoogle

 

Koja igra je bolja?

Tablić VS Kontra Tablić

Tablic

Kontra-Tablic

 

сеп 202012
 

Five in a row – TicTacToe x5 – Gomoku for android

Tic Tac Toe x 5 kao Gomoku – 5 u redu – x & o – iks oks je popularna igra na ploči! Skoro svi ljudi su igrali ovu igru kao deca na papiru. Sada Vaša deca mogu da unaprede svoju inteligenciju pomoću veštačke inteligencije a ne morate da koristite ni list papira.
Vaš cilj je da spojite 5 simbola u istoj liniji horizontalno, verticalno ili dijagonalno!

5 u redu se tradicionalno igra sa figuricama za go (crni i beli kamen) na ploči. Ova igra je poznata u raznim državama pod raznim imenima. Mi igramo sa klasičnim iks i oks (crni i beli) simbolima kao u igri tik tak toe (tic tac toe). Razlika sa tic tac toe igrom gre morate spojiti 3 simbola u istoj liniji je u tome da morate spojiti 5 simbola u istoj liniji (horizontalno, dijagonalno ili vertikalno). U igri tic tac toe rezultat je nerešeno ako oba igrača igraju dobro, a u igri tic tac toe x 5 kao Gomoku – 5 u redu – pobednik je igrač koji igra bolje.

Karakteristike igre:
* Mod za jednog igrača protiv programa – veštačka inteligencija sa visokim IQ
* Zum table (5x, 7x, 9x, 11x ili bez zumiranja) kao pomoć lakšeg izbora polja
* 4 različita nivoa (početni, srednji, dobar i najbolji)
* Početna težina je dobra kao pomoć za brže učenje ove igre
* Izaberi svoj simbol (crni ili beli)
* Izaberi taktiku programa (napadačka ili odbrambena)
* Izaberi ko igra prvi
* Vraćanje poteza je neograničeno
* Rejting – rank sistem
* Mod za više igrača preko WIFI konenkcije
* Pričaonica u glavnoj sobi u modu za više igrača

Pobedite program ili svoje prijatelje preko WIFI konekcije u igri Five in a row – Gomoku. Vaš cilj je da spojite 5 simbola u istoj liniji. Više informacija na sajtu https://play.google.com/ gde možete učitati besplatno ovu igru za Vaš android.

Free download…

Five in a row