Avatar billede cevik1 Nybegynder
11. februar 2005 - 13:11 Der 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.
Avatar billede _k Nybegynder
14. februar 2005 - 14:43 #1
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?
Avatar billede cevik1 Nybegynder
14. februar 2005 - 15:10 #2
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.
Avatar billede _k Nybegynder
14. februar 2005 - 16:34 #3
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);
    }
}

    // mc'erne gøres usynlige
function hideMCs() {
    for(x=0;x<mcArray.length;x++) {
        eval(mcArray[x])._visible = false;
    }
}

hideMCs();

interval = setInterval(nextPic, tid*1000);


Du laver så 5 mc'er og giver dem samme navn som i mcArray - eller omvendt - og smider dem ind på stagen. Så forsvinder de i runtime.
Avatar billede cevik1 Nybegynder
15. februar 2005 - 09:19 #4
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.
Avatar billede _k Nybegynder
15. februar 2005 - 09:27 #5
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"?
Avatar billede cevik1 Nybegynder
15. februar 2005 - 09:31 #6
Jeg har renamet mine mc´er så de passer med mc1 mc2 osv. og trukket dem ind på min scene
Avatar billede _k Nybegynder
15. februar 2005 - 09:41 #7
...og det virker stadigvæk ikke?

Har du mulighed for at kyle din fil, eller en der minder om den, op på nettet så jeg kan give den et kig?
Avatar billede cevik1 Nybegynder
15. februar 2005 - 10:00 #8
jeg har lagt filen op som kan downloades på: http://www.view.dk/random
Avatar billede _k Nybegynder
15. februar 2005 - 10:17 #9
Å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.
Avatar billede cevik1 Nybegynder
15. februar 2005 - 10:23 #10
sorry.. jeg havde ikke lige tænkt på version. Men jeg kan ikke se forskellen på de 5 linjer jeg havde i forvejen og dem du har lagt op nu??
Avatar billede _k Nybegynder
15. februar 2005 - 10:48 #11
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.
Avatar billede cevik1 Nybegynder
15. februar 2005 - 11:49 #12
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();
    }
}

    // mc'erne gøres usynlige
function hideMCs() {
    for(x=0;x<mcArray.length;x++) {
        eval(mcArray[x])._visible = false;
    }
    eval("mc6")._visible = false;
}

randomize();
hideMCs();
eval(mcArray[0])._visible = true;
trace("Viser billede: " + 0);
interval = setInterval(nextPic, tid*1000);
Avatar billede _k Nybegynder
15. februar 2005 - 12:18 #13
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)
Avatar billede _k Nybegynder
15. februar 2005 - 14:26 #14
Takker for point.
Avatar billede cevik1 Nybegynder
15. februar 2005 - 14:35 #15
det var så lidt, og selvtak fo hjælpen ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester