11. februar 2005 - 13:11Der er
14 kommentarer og 1 løsning
random af movie clip i flash mx
Hej Jeg har 5 billeder der skal vises i 10sek. og køre random i samme blok 1 gang. Jeg har billederne seperat som movie clips i samme fla. fil. Er der nogen som kan hjælpe med et script.
Har du et eksempel f.eks. i form af et link? Hvor random skal det være? Må et mc der er blevet vist, gerne optræde flere gange inden resten er vist, eller skal en sekvens på 5 "visninger" alle være forskellige?
Hej k Jeg har ikke et eksempel, da jeg ikke kan få det til at fungere med random men jeg har et eksempel uden i en swf. som jeg kan lægge op. http://www.view.dk/random/random.swf (det anbefales at du gør dit broeservindue mindre)
Det skal laves således at de 5 billeder som er i hver deres mc skal vises i random i ca:10sek hver. 1 gang pr. blok, altså alle 5 billeder må kun optræde 1 gang hver i den samme blok. Når alle 5 billeder er vist skal den gå over til et sort billede. Det betyder der faktisk er 6 billeder men den sorte er ikke med i random funktionen, den kommer til sidst hvorefter filmen stopper.
Ok, en lidt større opgave for 40 point, men hvad pokker, skulle lige tjekke hvor hurtigt jeg kunne ;o)
var interval; // Variabel hvori intervallet sættes var tid:Number = 2; // Hvor mange sek skal der være mellem billederne var k:Number = 0; // Hvilken plads i arrayet er vi nået til
// Array med mc'ernes instancenavne var mcArray:Array = new Array("mc1","mc2","mc3","mc4","mc5"); // mc'erne "blandes" mcArray.sort(function () { return Math.round(Math.random()*4) });
// Det enkelte mc vises frem og placeres function nextPic() { trace("kaldt fra interval"); if(k<mcArray.length) { hideMCs(); eval(mcArray[k])._visible = true; k++; } else { // Her kyler du så dit sorte mc på. Du kan f.eks. gøre det visible, hoppe til en anden frame eller noget helt andet clearInterval(interval); } }
Hej k tak for hurtig respons, og point.. jo jeg har måske været lidt nærring : )
jeg er ked af det men, jegkan ikke få det til at virke. Jeg har min scene hvor jeg har actions scriptet på 1.layer 1 fame, derefter har jeg sat alle mc ind på hver deres layer, således at jeg i min scne har action scriptet og 6 layers hvor mc´er ligger på 1. frame. Når jeg tester får jeg i output vinduet en tekst der står: kaldt fra interval. Desuden er det kun mc´en der ligger øverst som jeg kan se når jeg tester. hvad gør jeg forkert.
Lyder som om det er dine instancenavne den er gal med. HAR du lavet alle dine mc'er om til mc'er? Og hvis du copy/paster koden, har du så navngivet (i instancename-feltet i property panelet) dine mc'er fra "mc1" til "mc5"?
Årsagen er at du bruger Flash MX, hvor jeg har kodet til MX 2004 og Action Script 2. Husk lige at nævne, at du sidder med den, hvis du smider et nyt spørgsmål herinde på eksperten.
Skaden er dog ikke større, end at du kan udskifte de øverste 5 linjer med:
var interval; // Variabel hvori intervallet sættes var tid = 2; // Hvor mange sek skal der være mellem billederne var k = 0; // Hvilken plads i arrayet er vi nået til
// Array med mc'ernes instancenavne var mcArray = new Array("mc1","mc2","mc3","mc4","mc5");
... og så skal du huske at navngive mc'erne. Det var de ikke i filen du havde smidt op.
Forskellen ligger i at jeg datatypede de gamle linjer og har fjernet dem i de seneste. Datatyping er når man fortæller Flash hvilken type en variabel er (et tal, en streng, et array osv.). AS2 understøtter datatyping, men det gør Flash MX og tidligere ikke, hvorfor variablene bliver læst forkert.
Jeg prøvede at kører den med ændringerne, der kom noget frem og denskiftede også billederne men random ville den ikke. derfor fik jeg lavet lidt om på koden så den nu virker. 1000 tak for hjælpen. koden som virker paster jeg lige ind, ved ikke om du kan bruge den til noget men ellers er der måske andre der kan få glæde af den. håber ikke du synes det var for meget besvær og for lidt point :)
var interval; // Variabel hvori intervallet sættes var tid = 10; // Hvor mange sek skal der være mellem billederne var k = 1; // Hvilken plads i arrayet er vi nået til
// Array med mc'ernes instancenavne var mcArray = new Array("mc1","mc2","mc3","mc4","mc5");
function randomize() { var j; for(i=0;i<mcArray.length;i++){ j = Math.round(Math.random()*4); if(i != j) { swap(i, j); } }
}
function swap(i, j) { var temp = mcArray[i]; mcArray[i] = mcArray[j]; mcArray[j] = temp; }
// Det enkelte mc vises frem og placeres function nextPic() { if(k<mcArray.length) { trace("Viser billede: " + k); hideMCs(); eval(mcArray[k])._visible = true; k++; } else { // Her kyler du så dit sorte mc på. Du kan f.eks. gøre det visible, hoppe til en anden frame eller noget helt andet trace("sort billede"); hideMCs(); eval("mc6")._visible = true; clearInterval(interval); stop(); } }
Supersejt at du lige custumizer scriptet! Og det er skam fint nok med de point du har smidt på bordet - det er jo ikke point der er den primære årsag til at vi vader rundt herinde ;o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.