Autor Zpráva
MaxiPa
Profil *
Hledám pomoc,
vytvářím jednoduchý filmik. Potřebuji poradit podrobně – jsem úplná lama a o objektově orientovaném programování ani ActitonScriptu toho moc nevím – nechci nikomu konkurovat, pro moje potřeby by mi úplně vystačil jeden podrobný návod:

Mám frame (snímek1) na něm šest moviclipů (mají stejné rozměry jen různé, předem pevně stanovené pozice a různé obsahy) – movi1, movi2, movi3, movi4, movi5, movi6
Potřebuju, aby se při každém zobrazení snímku (spuštění swf souboru) tyhle klipy na ploše náhodně proházely.

Prosím, prosím napište mi někdo potřebný scriptík. Děkuji
MaxiPa
embee
Profil
Pro nahodne cokoli ve flashi se pouziva funkce Math.random(). Vrati ti nahodne cislo od 0 do 1. To si pak muzes prepocitat tak, aby davalo rozsah 1-6.

Nevim, co myslis tim prohazovanim, takze nemuzu vedet, co presne se ma s MCs stat :) Chtelo by to presnejsi popis.
MaxiPa
Profil *
Ty MCs mají jenom něnit svoje pozice - uvitř těch MC se neděje nic (při načítání snímku), čili by se vzájemě měly náhodně přehazovat souřadnice (_x,_y) těch MCs. (teda asi referenční body?)
Johnik
Profil
Prehozeni objektu na scene: (ActionScript 3 psany primo do snimku na casove ose)

var mcToShuffle:Array = [];

for (var i:uint = 0; i < 6; i++)
{
	var mcMoved:MovieClip = this["movi" + (i + 1)];
	mcToShuffle.push(new Point(mcMoved.x, mcMoved.y));
}

mcToShuffle = shuffle(mcToShuffle);

for (var i:uint = 0; i < 6; i++)
{
	var mcToMove:MovieClip = this["movi" + (i + 1)];
	mcToMove.x = mcToShuffle[i].x;
	mcToMove.y = mcToShuffle[i].y;
}

function shuffle(a:Array):Array
{
	var arr:Array = [];
	while (a.length > 0) {
		arr.push(a.splice(Math.round(Math.random() * (a.length - 1)), 1)[0]);
	}
	return arr;
}
MaxiPa
Profil *
Díky moc. Asi jsem měl napsat dřív, že se hrabu spíš jednoduší verzí (AS2). Můžu ještě znova otravovat? Jak se to u AS2 liší?
Xka
Profil *
Johnik:
Hele, mně ten script nefunguje. V čem m§že být problém?
nelíbí se mu
-uint
-jména proměnných
-když už to nějak opravím, tak ale některý ty movie překrejvá - to asi tazatel nechtěl (podle mě chtěl zobrazit vždycky všechno, jen na různých pozicích). Ale todle fakt nevím jak udělat. Xka
Johnik
Profil
Xka:
Nevim proc se ti nelibi uint...
Promenne si nazvi jak uznas za vhodne, treba a, b, c nebo jeste lip a1, a2...

Kod jsem opravil do funkcni podoby.
Xka
Profil *
Johnik:
Já neříkám, že se mi nelíbí uint - ale flash ho vyhazuje: Error.....
Johnik
Profil
Xka:
uint je zakladni (stejne jako int nebo Number) typ promenne v as 3. Flash (od verze CS3) nemuze vyhazovat chybu v pripade pouziti uint.
Xka
Profil *
Johnik:
To nevím, ale mne to chybu vážně vyhazuje....ale když nahradím uint za int tak šlape bez prostestů??
Jo a nechci do toho moc rejt, ale nechtěl ten MaxiPa náhodou kód v AS2 (Jsem jízlivej, co? Ale je fakt, že v AS2 bych to nesved - no možná taky, ale musel bych mooc přemejšlet a na to jsem línej). X
Pepan934
Profil *
Johnik:
Ahoj, jmenuju se Pepan a jsem tu úplně novej. Začal jsem se v jednom kurzu učit Flash teďka s AS, ale řek bych, že lektor, co jsme ho teď dostali, toho moc neví. Skripty začal vysvětlovat v AS2. Todle promíchávání by se mi do mýho projektu moc hodilo - ale z AS3 neznám ani ťuk a tudíž do AS2 (ve kterým navíc znám jemom stručné základy) si něco podobnýho nikdy sám nepřevedu. Nemohl bys todle to samý (ten skriptík) napsat v AS2. Moc prosím.... Díky Pepan
Johnik
Profil
Melo by to fungovat stejne i v as 2. Jen si uint zmen na Number a Point na Array.
Pepan934
Profil *
Johnik:
Tak jsem se zařidil podle rady - chybu to nevyhazuje, ale taky to nefunguje. Nemělo by to třeba být v nějaké proceduře, nebo nějaký jiný zápis? Pepan

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: