[ SirPsycho @ 07.06.2011. 15:23 ] @
Radi se o jednostavnoj igrici,

ima nekoliko faza, određen broj elemenata i vreme potrebno za rešavanje:

FAZA1 : 3x4 elementa ( 30 sekundi )
FAZA2 : 4x4 elementa ( 60 sekundi )
FAZA3 : 6x6 elementa ( 90 sekundi )

PROBLEM PRVI:

Imam tri AS3 fajla, za svaki nivo posebno. Broj elemenata se izmenio, vrednost tajmera...
Jedino se nešto dešava sa vremenom ( Tajmerom )

Igram prvu fazu ( ja sam uz ovu poruku prikačio 2x2 elementa ), za nju potrošim na primer 20 sekundi,

počinje sledeća faza i tajmer odbrojava : 60...59...58...57...56...55...54...53...52...51... I igrica se završi, odnosno,

dešavga se isto što bi se desilo da mi je vreme isteklo u drugoj fazi.


DRUGI PROBLEM:

Mada, prvi mi je prioritetniji, dosta bi mi značilo kad bi mi neko pomogao i oko poena. Pitanje je: Kako da mi se broj poena prenosi iz faze u fazu, a ne da se u svakoj novoj fazi resetuje i kreće od 0.


Uz poruku je prikačen fajl, molim još jednom za pomoć.





[Ovu poruku je menjao SirPsycho dana 08.06.2011. u 11:05 GMT+1]
[ SirPsycho @ 08.06.2011. 00:49 ] @
Pomoć, bilo ko???

[Ovu poruku je menjao SirPsycho dana 08.06.2011. u 10:55 GMT+1]
[ SirPsycho @ 08.06.2011. 10:06 ] @
Dajte neko rešenje...
[ MenOfHonor @ 08.06.2011. 14:42 ] @
Citat:
SirPsycho: Pitanje je: Kako da mi se broj poena prenosi iz faze u fazu, a ne da se u svakoj novoj fazi resetuje i kreće od 0.

Da bi nekoj promenljivoj koja je definisana u jednoj klasi mogao da pristupiš u drugoj klasi moraš da je učiniš javnom (public). U tvom projektu promenljive koje sadrže broj ostvarenih bodova su privatne (private), pa im se iz tog razloga ne može pristupiti spolja. Da bi ih učinio vidljivima u ostalim klasama moraš da navedeš ključnu reč public, kao i static kako bi mogao da im pristupiš bez instanciranja klase:
Code:
// prvaFaza
public static var gameScore:int;

// drugaFaza
public static var gameScore2:int;

// trecaFaza
public static var gameScore3:int;

Tokom inicijalizacije promenljive gameScore dodelićeš vrednost 0:
Code:
// podesavanje bodova
gameScore = 0;

Kada želiš da iz druge faze pristupiš promenljivoj gameScore iz prve faze napisaćeš:
Code:
// podesavanje bodova
gameScore2 = prvaFaza.gameScore;

U trećoj fazi dodelićeš promenljivoj gameScore3 vrednost promenljive gameScore2 iz druge faze:
Code:
// podesavanje bodova
gameScore3 = drugaFaza.gameScore2;
[ SirPsycho @ 09.06.2011. 00:06 ] @
Hvala puno, to je to. Sve radi kako treba. Sto se tice problema sa vremenom, rešio sam problem:

U AS fajul prvaFaza , trebalo je dodati removeListener()

Dakle , uradio bih sledeće:

Code:
   
 if ( cardsLeft == 0 ) {
             MovieClip(root).gameScore = gameScore;
             MovieClip(root).gotoAndStop("drugaFaza");
             removeListener();
}




i onda u odgovarajućem delu koda dodati i ovo:

Code:

private function removeListener():void
                     {
                       gameStartTime = 0;
                       removeEventListener(Event.ENTER_FRAME,showTime);
               }






Napisao sam ovo kako bih upotpunio odgovore na oba moja pitanja, možda nekome zatreba.
Hvala još jednom, zaista mi je puno pomoglo ovo sa bodovima.
[ StarCraft @ 09.06.2011. 12:48 ] @
Jedino obrati pažnju da je zvanična konvencija prilikom dodeljivanja naziva kalsama da počinju sa Velikim slovom (u suštini nebitno, ali pošto skoro svi developeri prate tu konvenciju, biće ti i lakše da se snađeš u tuđim kôdovima i prilikom čitanja dokumentacija)

Postoji mnogo fora što se tiče nasleđivanja klasa, public, static, protected... i na nekim stvarima ćeš se zaglavljivati ako to ne znaš, ali u isto vreme menoj ni previše da se opterećuješ sa baš svim tim stvarima ako ne budeš imao tix problema, jer ćeš se samo zbuniti, realno trebaće ti samo možda 30% od svega toga. Ostatak se primenjuje u mnogo većim i ozbiljnijim projektima.

Evi ti dokumentacija na tu temu:
Statements, Keywords & Directives

Ovde ti je spisak svih operatora (korisno da znaš)
Operators
[ SirPsycho @ 16.06.2011. 10:39 ] @
Imam pitanje...

Kako da povezem igricu sa php skriptama na serveru?
Evo šta mi je poslao PHP programer, ali mene najvise muci to sto je igrica radjena u AS3,
a on mi je dao objasnjenje za AS2:

kada igrica krene, mora da se pozove javascript sa stranice koji ce pronmeniti broj poena koji korisnik ima

1. kada se kliken na dugme za start treba da se pozove ova scripta i JS metod:

loadVariables("gameStart.php", "_blank", "POST");
getURL("javascript:GameStart();");
ovo mora u flashu da se doda.

2. kada se igra zavrsi igrica, zove se ovaj script kako bi se sacuvao rezultat:
loadVariables("game-over.php?score=" + _root.score, this);


Sta bi trebalo uraditi? StarCraft-e pomagaj
[ MenOfHonor @ 16.06.2011. 15:36 ] @
Jeste da nisi tražio moju pomoć, al' ipak ću da ti pomognem. Za pozivanje funkcije u JavaScript-u koristi se klasa ExternalInterface i njen metod call():
Code:
ExternalInterface.call("funkcija",argumenti);

Takodje je moguće da proslediš nula ili više argumenata u tu funkciju.
Kada želiš da u flashu koristiš vrednost koju je vratila funkcija iz JavaScript-a dovoljeno je da u promenljivu smestiš poziv call() metode:
Code:
var rezultat = ExternalInterface.call("funkcija",argumenti);

Dakle, da bi pozvao JavaScript funkciju klikom na neki taster napisaćeš sledeće:
Code:
import flash.events.MouseEvent;
import flash.external.ExternalInterface;

taster_btn.addEventListener(MouseEvent.CLICK, pritisnutTaster);
function pritisnutTaster(dogadjaj:MouseEvent):void {
    var rezultat = ExternalInterface.call("funkcija",argumenti);
}


Na primeru koji možeš da preuzmeš iz priloga kada pritisneš taster pozvaće se JavaScript funkcija i proslediće joj se parametar tipa string koji će na html strani da kreira paragraf u kome će se ispisati "Pozdrav iz ActionScripta 3", a vratiće vrednost "Pozdrav iz JavaScripta" koji će se ispisati u dinamickom tekst polju u flash plejeru.