Autor Zpráva
frostyak
Profil
Jou, mam problem. Websajta o rozmere 60 framov, prvych 29 je zobrazovanie sajty, 30 frame: Stop(), a ak stlacim jeden z buttonov tak gotoAndPlay(31) (skusal som aj _root.gotoAndPlay, this.gotoAndPlay). V skrate... http://www.spinthesix.xf.cz/ . Problem je v tom, ze po kliknuti na button sa spusti animacia iba sporadicky. Skusal som odstranit zvuk, tym to nieje. Animacia je cista, nema kde nastat chyba, takze realny problem sa nachadza... fakt neviem kde. Help!! =))
frostyak
Profil
hmm dnes rano som zistil z v debugeri su este aj stare instancie ktore som zmazal uz davno... ako je to mozne!? (samozrejme ze som ich odstranil aj z library.. proste, ako je mozne ze sa pusti zvuk ktory ani nieje v library a ani v AS..) Ak ma niekto naladu na riesenie hlavolamu tak ten problemovy zdrojak je pristupny =) ZDROJAK
dredie
Profil *
No podival jsem se na to - cely kod je hodne spatne naspany, spousta funkci, ktere tam mas, ti nefunguji jenom proto, ze misto movieClipu pouzvias buttony (neptej se me proc to tak je, ale kdyz jsem buttony zmenil na movieClipy, taxe chovaly tak jak jsem ocekaval). Navic zpusob pripojovani kodu k objektum je a priori spatne. Pouzivani globalnich promennych zde taky nema smysl. Pri psani kodu se drz nasledujicich pravidel:

1. pouzvivej pouze movieClipy, jsou mnohem flexibilnejsi a vice kontrolovatelne nez buttony
2. veskery skript pis na 1 frame hlavni casove osy. Potom misto nasledujiciho kodu:

on(release) {
....
}

budes pouzviat

this.myBtn.onRelease = funtion() {
...
}

- duvod je konzistentnost kodu, coim vice kodu na jednom miste, tim lepe. Pouze si musis dat pozor na spravne adresovani objektu.

3. globalni promenne pouzviej jen tam kde je to potreba. Veskere standartni promenne (v tvem souboru se tak daji pouzit vsechny) deklaruj nasledovne:

var myNumber:Number = 0;
var myString:String = "ahoj";
var myBoolean:Boolean = true;

- jedna se o striktni typovani a je dulezite pro debuggovani kodu, protoze se ti pak nestane, ze do funkce, ktera vyzaduje cislo, vkladas treba string. Dej si pozor na jednu vec - pokud budes takto deklarovat promennou uvnitr funkce, stane se z ni lokalni promenna a po skonceni funkce bude smazana.

D.

ps.: pise se stop(); a ne Stop();
frostyak
Profil
wah, vycerpavajuca odpoved... diki moc za vysvetlenie tejto zakladnej chyby. je fakt, ze v AS a flashi som zaciatocnik, ale snazim sa uplatnit vedomosti z inych jazykov, ktore su predsalen rozdielne najme kvoli objektovemu programovaniu ktore som sa snazil pouzit na sajtu (viz Delhpi/Visual C++). Takze aspon teraz viem, ze tu mam rozmyslat trochu inym sposobom ;)

este raz diki za pomoc, nech ti zdravie sluzi, dam si za teba pivo.
dredie
Profil *
frostyak
ale on action script je objektovne orientovany jazyk, ale to nejsou objekty ktere vkladas na scenu (jako napr. grafika), ale primo pomoci kodu. Treba:

var myString:String = new String("blabla");

- timto zapisem vytvoris instanci tridy String, ktera ma hodnotu blabla - toto je ciste objektove orientovany zapis pokrocileho skriptovani ve flashi. Podobnym zpusobem se da v actionScriptu vytvaret prakticky cokoli, muzes si pak psat svoje vlastni tridy a jejich metody v externich souborech.... ja se v tomhle zatim skoro nevyznam, takze ti to nijak blize vysvetlit nemuzu ;)

D.
frostyak
Profil
njn, to je fakt, presne ako v klasickych objektovych jazykoch... volas subtriedy a potomkov, ale v poniektorych to funguje aj grafickymi definovanymi funkciami ^^
Toto téma je uzamčeno. Odpověď nelze zaslat.