[ Kurt2 @ 19.06.2006. 18:49 ] @
Da li postoji funkcija u Flešu koja bi pauzirala izvršavanje koda? Kao na primer sleep(5) npr u Linuksu?
Ako ne postoji, kako to drugačije realizovati? Znači, da kod na određeno vreme stane sa izvršavanjem?

Da elaboriram:
Radim vizuelizaciju binarnog stabla u Flešu. Uradio sam statičku implementaciju stabla (znači, ako je roditelj na i-tom mestu u nizu, onda su mu potomci na 2*i+1 i 2*i+2-om mestu). Problem je sa obilaskom. Koristim rekurzivni obilazak:

Code:

function preorder(stabl,ni)
{
    if (stabl[ni]!=-500) { // -500 ekvivalento NULL
        trace(stabl[ni]);
        preorder(stabl,2*ni+1);
        preorder(stabl,2*ni+2);
    }
}


E sad, potrebno je da prikažem po koracima obilazak stabla. Znači da se to vidi i da animacija ide polako, čvor po čvor. Znači, umesto trace komande bi trebalo da stoji kod koji bi npr prikazivao punjenje steka, bojio drugom bojom čvor koji se obrađuje, itd. Problem je što sve to treba da ide polako, tj. da imam pauzu pre sledećeg preorder-a. Kako to da uradim?

[Ovu poruku je menjao Kurt2 dana 19.06.2006. u 23:32 GMT+1]
[ GRocky @ 20.06.2006. 14:11 ] @
Vidi nisam bas skroz siguran ali trebalo bi funkciju preorder da pozivas onEnterFrame i onda u f-ju da stavis jednu promenjivu koju ces na pocetku inicijalizovati na 0 , a zatim na svaki frejm povecavati za jedan i u jedan IF koji gleda ako je promenjiva 5 * fps inicijalizujes je opet na 0 i pozoves kod.

Valjda ti to treba i valjda tako treba da radi
[ Kurt2 @ 20.06.2006. 15:06 ] @
Mislim da razumem šta hoćeš da kažeš, ali problem ipak ostaje jer može da se desi da se u jednom preorderu pozove rekurzivno dva puta taj isti preorder. Šta tada? A u okviru tih preordera, takođe mogu da se pozovu još po dva preordera.
Možda da se napravi neki movieclip koji bi se duplirao pozivanjem svakog preordera, tako da po jedan clip bude zadužen za po jedan preorder, ali onda nastaje problem što sve to treba vremenski da se sinhronizuje da ide jedan za drugim - npr. startuje se jedan clip (znači poziva se preorder), iscrtava na ekranu punjenje steka, ali taj preorder može da startuje još dva komada koji bi morali da sačekaju da se ovaj prvi završi, a i oni sami da idu jedan za drugim. Znači komplikovano, ako me uopšte razumeš...
[ White Weedow @ 22.06.2006. 02:30 ] @
Heh to je malo zeznuto mozda ti zelis da jednostavno iskoci iz te funkcije ako zadata komanda neispunjava uslov onda samo "break"
[ Flitter @ 24.06.2006. 15:41 ] @
Evo ideje. Ako ti je bitan vizuelni prikaz stabla,
mozes u prvom frejmu da izgenerises celo stablo,
ali da ti _alpha svih chvorova bude 0 (nula).

Pretpostavljam da ti je svaki cvor
realizovan kao poseban movieClip.

Zatim se problem resava sam od sebe,
jer ti ostaje samo glavna vremenska osa,
gde povecavas _alpha za odredjeni indeks stabla.

Svaki novi prolazak kroz prvi frejm, novi cvor.
[ Kurt2 @ 24.06.2006. 17:37 ] @
Zaboravio sam da kažem da sam problem vizuelizacije rešio - napravio sam čvorove (kao movieclip-ove) koji su na početku postavljeni na _visible=false, i kada ubacujem vrednosti prebacujem vidljivost na true, i tu nema nikakvih problema, sve radi kako treba. Problem je u tome što treba da vizuelizujem postupak obilaska stabla. Obilazak stabla (preorder, realizovan iterativno) u c-u izgleda ovako:

Code:

template <class T>
void BSTree<T>::iterativePreorder(){
    BSTNode<T>*p = root;
    StackAsArray<BSTNode<T>*> stack(numOfElements);
    if (p!=NULL) {
        stack.push(p);
        while (!stack.isEmpty()) {
            p=stack.pop();
            p->visit();
            if (p->right!=NULL)
                stack.push(p->right);
            if (p->left!=NULL)
                stack.push(p->left);
        }
    }
}


Znači, poenta je da ja rad ovog koda grafički prikažem u flešu. To podrazumeva da imam nacrtan magacin (npr negde ispod stabla) koji se puni i prazni u skladu sa ovim kodom. I naravno, to sve treba lepo da se vidi. I tu mi se javlja problem kako da sve to napravim - da se magacin puni elementima iz stabla, kao i da se prazni. Ja sam mislio da uzmem rekurzivni preorder (čiji sam kod već pisao u nekom od prethodnih postova) i da njega korsitim za opis rada ovog iterativnog preorder-a. Međutim, problematika uopšte nije naivna...