Autor | Zpráva | ||
---|---|---|---|
Eilla Profil * |
#1 · Zasláno: 11. 10. 2007, 16:36:20
Ahojky :) Potřebovala bych poradit jednu věc. Zkoušela jsem něco udělat ve flashi a nemůžu přijít na to, jak udělat aby se mi z jednoho MC duplikoval druhý MC a ten když dosáhne nějaké podmínky tak se duplikoval znova a tak dále :) Přesněji šlo o to, že pokud dosáhne jeden MC hodnoty x 200.
Takže když to shrnu, jeden MC jede a jede a až dosáhne x 200 tak se objeví další MC který by měl když dosáhne x 200 vygenerovat další.. :)
Zkoušela jsem to nějak takhle, ale nefunguje to a nemůžu přijít kde mám chybu :( Jsem naprostá začátečnice :( Děkuju za všechny odpovědi. |
||
Časová prodleva: 5 dní
|
|||
Hlad Profil * |
#2 · Zasláno: 16. 10. 2007, 14:30:10
nemam ted u sebe flash
ale nezda se mi adresovani this._x versus ("novyMC" + _root.a)._x zkus si vse vy trace() ovat |
||
embee Profil |
#3 · Zasláno: 17. 10. 2007, 23:49:08
nazeru se a vyresim to :D
|
||
embee Profil |
#4 · Zasláno: 18. 10. 2007, 01:18:54
ok tady je kod jak jsem slibil :D Cely patri na prvni frame hlavni casove osy.
/*promenne pro nastaveni rychlosti pohybu movieClipu, prahu pro zduplikovani v pixelech na ose x a promenna pro generovani jmen duplikovanych movieClipu*/ var speed:Number = 5; var treshold:Number = 200; var mcName:Number = 1; /*inicianci funkce, ktera nejprve pripoji startovaci klip z knihovny. Je potreba: 1. vytvorit symbol movieClip, ktery ma byt na scene duplikovan 2. povolit pro nej export pro actionScript (advanced options pri tvorbe symbolu). Identifier v tomto konkretnim pripade je ball, nicmene muzes zvolit libovolne jine jmeno. Pak akorat musis zmenit ball na tebou vybrane jmeno i nize ve skriptu*/ function init():Void { this.attachMovie("ball", "ball"+mcName, this.getNextHighestDepth()); var ref:MovieClip = eval("ball"+mcName); ref.checked = false; moveMc(ref); } /*funkce pro duplikovani clipu, zde neni treba nic upravovat, muzes si samozrejme pohrat se startovni pozici nove vznikleho movie clipu*/ function createMc(ref:MovieClip):Void { mcName++; ref.duplicateMovieClip("ball"+mcName, this.getNextHighestDepth()); var ref = eval("ball"+mcName); ref._x = 0; ref.checked = false; moveMc(ref); } /*funkce pro pohyb movieClipu a checkovani toho, jestli se movieClip poprve dostal za definovanou hranici na ose x. Pokud ano, zavola funkci pro duplikaci a prehodi svuj stav do "checked" - to vyjadruje skutecnost, ze tento mc uz byl zduplikovan a neni treba dalsi duplikace (jinak by se ti po prekroceni hranice ten clip duplikoval kazdy frame a to jiste nechces :)*/ function moveMc(ref:MovieClip):Void { ref.onEnterFrame = function():Void { ref._x += speed; trace(ref._x > treshold && ref.checked == false); if (ref._x > treshold && ref.checked == false) { ref.checked = true; createMc(ref); } } } //zavolani iniciacni funkce init(); pozn.: celkove ke kodovani: vzhledem k tomu ze ctu, ze jsi zacatecnice, nepouzil jsem OOP model programovani, coz by bylo uplne nejlepsi. Dam radu jak se zlepsit v kodovani: ne, opakuji NEpouzivej nikdy (=never ever) kod pripojeny primo k objektu. Svazuje to ruce a dela neporadek v projektu - u mensich pokusu to sice nevadi, ale az se dostanes k necemu vetsimu, zjistis ze napsat 500 radku kodu nic neni a pokud ho budes mit roztahany po vsech objektech, nebudes nikdy schopna kod poradne debbugovat. Navic tento typ 'programovani' se jeste poji k AS 1.0, coz je uz peknych par let mimo hru (aktualni je AS 3.0) - bohuzel se porad jeste vyskytuje v tutorialech. Snaz se naucit neco o OOP, bez toho nenaprogramujes nikdy nic poradneho ;) |
||
Časová prodleva: 3 dny
|
|||
XXX Profil |
#5 · Zasláno: 21. 10. 2007, 00:29:48
embee
vycerpavajici.... ;) :-D K tomu nemam co dodat, protoze se mi to nechce cele cist ;) :-)))) |
||
Časová prodleva: 17 let
|
0