[ MarijaFunky @ 22.05.2008. 08:43 ] @
Zdravo svim clanova foruma

Imam jedan problem u Action Script-u u igricu koju radim u flash-u. Ovako: Imam ribicu koja je sami igrac i koja se pokrece na sceni. Na sceni ima 7 slova koje ribica treba da ulovi, koje se isto tako krecu. Kad ih ulovi (kad dodje do kolizija i hit.Test je true) slovo treba da se pomesti u dolni levi ugo. To mi nije problem, to sve funkcionise. E sad problem je u to sto kad dodje do kolizija izmedju ribice i slova i kad slovo nestane sa scene, pojavi se opet nakon nekoliko secunda i nastavi sa svojim kretanjem po sceni. Ja hocu da kad ribica dotakne slovo da se ono pojavi dole na sceni i da tamo i ostanei da prestane se kretati. Samo slovo je movie clip u kojim ima “nested” jos jedan movie clip.
Na osnovni movie clip (slovo) action script je sledni:

onClipEvent (enterFrame) {
this._x = this._x - 10;
if (this._x<0) {
this._x = 640;
}
}

A na vgnezdeni (nested) ovaj:

onClipEvent (enterFrame) {
if (this.hitTest(_root.fish)) {
_root.score= _root.score + 20;
_parent.play ();
}
}

Sta treba da dodam, pretpstavjam u osnovni movie clip tako da kad slovo se pojavi na drugi deo scene(u dolnjem levi ugo) da tamo i ostane , a ne da produzi sa kretanjem .

Unapred hvala svima

Pozdrav



[Ovu poruku je menjao MarijaFunky dana 22.05.2008. u 10:18 GMT+1]
[ StarCraft @ 22.05.2008. 14:33 ] @
Uf, pazi sad, ovde moze da bude stvarno svashta, ali mislim da znam u cemu je problem. Ti u stvari NON-STOP pomerash parent objekat (slovo) i ide na levu stranu brzinom -10 pix/frejm. Cak i kada se dogodi kolizija, i _parent objekat ode u nextFrame (uradi play() ) njegova koordinata se i dalje menja, tj. "krece se na levu stranu".

Sto rezultira da iako grafika tog objekta nije otishla <0, centar tog objekta JESTE otishao <0, sto rezultira da se on opet pojavi na koordinati 640 i nastavi sa kretanjem od -10 pix/frejm. Zaboravljash mozda da ti pomerash _parent objekat konstantno i nigde mu nisi rekao da prestane.

[edit]Obrisan deo poruke sa e-mail adresom.[/edit]

[Ovu poruku je menjao tosa dana 23.05.2008. u 03:25 GMT+1]
[ reject @ 22.05.2008. 23:38 ] @
Upravo tako, ubaci ovo:

Negde ranije (prethodni frejm):

Code:

var letterKilled:Boolean=false;


Mozes da napravis i niz od 7 boolova.

Code:

onClipEvent (enterFrame) {
   if(letterKilled==false){
      this._x = this._x - 10;
          if (this._x<0) {
            this._x = 640;
            }
      }
}

onClipEvent (enterFrame) {
   if (this.hitTest(_root.fish)) {
       _root.score= _root.score + 20;
      _parent.play ();
      letterKilled=true;
   }
}


Takodje, mislim da bi bilo pametno da predjes na AS3.
Mozes da napravis listenere za svako slovo tako da
se samo ubije kad treba. Tako napravis teoretski beskonacno
slova o kojima sama scena ne brine uopste. Odnosno, jos bolje
napravis niz kontejnera koji mogu da imaju razne klipove unutra.

[ MarijaFunky @ 23.05.2008. 07:55 ] @
Puno puno hvala, stvarno ste mi pomogli. Resila sam problem i sad ide onako kako treba.
Hvala jos jednom!Pozdrav
[ StarCraft @ 23.05.2008. 08:50 ] @
Citat:
reject
Takodje, mislim da bi bilo pametno da predjes na AS3.
Mozes da napravis listenere za svako slovo tako da
se samo ubije kad treba. Tako napravis teoretski beskonacno
slova o kojima sama scena ne brine uopste. Odnosno, jos bolje
napravis niz kontejnera koji mogu da imaju razne klipove unutra.

Sve si nam rekao :)


[Ovu poruku je menjao StarCraft dana 23.05.2008. u 11:09 GMT+1]
[ reject @ 24.05.2008. 22:03 ] @
Pa kazem to zato sto je AS3 drugaciji od AS2 i svega pre
(ne sasvim, ali prilicno) tako da je veoma dobro preci na
njega sto pre jer ce adobe verovatno da sve tera u tom
pravcu.