Avatar billede angelhot Nybegynder
06. juli 2003 - 14:41 Der er 41 kommentarer og
1 løsning

Knap funktion

Hvordan laver man sådan at når man trykker på ens knap, skal den få en anden farve, så den er markeret at den er ved dette emne og den farve skal så forsvinde og gå tilbage til den knap som den var før, hvis man trykker på en anden?

Og hvordan laver man hvis man fjerner musemarkøren væk fra knappen, at den laver en lille animation, som evt. fader tilbage til den knap som den var før?

Håber nogen forstår mig for det er lidt indviklet forklaret
Avatar billede jakwag Nybegynder
06. juli 2003 - 14:55 #1
hej

Jeg forstår, men det er ikke ligetil. Lad os starte med dit første spm.

Det nemmeste er at lave dine knapper om til movieclips istedet.

lad os så sige at du har to knapper som hedder knap1_mc og knap2_mc.

i samme frame som knapperne ligger (ikke nødvendigvis i samme lag. Lav et lag der hedder "actions" og som ligger øverst) skriver du:
allOff = function(){
knap1_mc.gotoAndStop(1);
knap2_mc.gotoAndStop(1);
}
knap1_mc.onRollOver = function(){
this.gotoAndStop(2);
}
knap1_mc.onRollOut = function(){
this.gotoAndStop(1);
}
knap1_mc.onPress = function(){
allOff();
this.gotoAndStop(3);
}

og så det samme bare med knap2_mc.
Avatar billede jakwag Nybegynder
06. juli 2003 - 15:02 #2
eller:

allOff = function(){
for(var i =1;i<=numberOfButtons;i++){
this["knap"+i+"_mc"].gotoAndStop(1);
}
}

newButtonDef = function(quant){
for(var i =1;i<=quant;i++){
this["knap"+quant+"_mc"].onRollOver = function(){
this.gotoAndStop(2);
}
this["knap"+quant+"_mc"].onRollOut = function(){
this.gotoAndStop(1);
}
this["knap"+quant+"_mc"].onPress = function(){
allOff();
this.gotoAndStop(3);
}
numberOfButtons = numberOfButtons+1;
}
}
Avatar billede jakwag Nybegynder
06. juli 2003 - 15:03 #3
newButtonDef = function(2);
Avatar billede jakwag Nybegynder
06. juli 2003 - 15:04 #4
hovsa:

Det skal være:

newButtonDef(2);
Avatar billede jakwag Nybegynder
06. juli 2003 - 15:06 #5
hvis du så har tre knapper kan du så skrive:

newButtonDef(3);

Men scriptet her kræver selvfølgelig at du kalder dine mc'er for knap1_mc knap2_mc etc.
Avatar billede jakwag Nybegynder
06. juli 2003 - 15:10 #6
Hov. Jeg har lige glemt en lille detalje. Et øjeblik...
Avatar billede jakwag Nybegynder
06. juli 2003 - 15:26 #7
se eksempel her:

www.contentdepot.dk/multibuttons.swf
og fla:
www.contentdepot.dk/multibuttons.fla

Koden ser sådan her ud:

knap_array = new Array();
allOff = function () {
    var len = knap_array.length;
    for (var i = 0; i<len; i++) {
        this[knap_array[i]].gotoAndStop(1);
        this[knap_array[i]].down = false;
    }
};
newButtonDef = function (name) {
    this[name].onRollOver = function() {
        if (!this.down) {
            this.gotoAndStop(2);
        }
    };
    this[name].onRollOut = function() {
        if (!this.down) {
            this.gotoAndStop(1);
        }
    };
    this[name].onPress = function() {
        allOff();
        this.gotoAndStop(3);
        this.down = true;
    };
    knap_array.push(name);
};
newButtonDef("knap1_mc");
newButtonDef("knap2_mc");
newButtonDef("menu_mc");

Koden her har jeg lavet så du kan kalde dine knapper hvad du har lyst til.
Avatar billede jakwag Nybegynder
06. juli 2003 - 15:35 #8
Nu har du også fået din lille animation på. (skal downloades samme sted fra)

koden er nu:

knap_array = new Array();
allOff = function () {
    var len = knap_array.length;
    for (var i = 0; i<len; i++) {
        this[knap_array[i]].gotoAndStop(1);
        this[knap_array[i]].down = false;
    }
};
newButtonDef = function (name) {
    this[name].onRollOver = function() {
        if (!this.down) {
            this.gotoAndStop(2);
        }
    };
    this[name].onRollOut = function() {
        if (!this.down) {
            this.gotoAndPlay(4);
        }
    };
    this[name].onPress = function() {
        allOff();
        this.gotoAndStop(3);
        this.down = true;
    };
    knap_array.push(name);
};
newButtonDef("knap1_mc");
newButtonDef("knap2_mc");
newButtonDef("menu_mc");

Sig til hvis der er noget af det du ikke forstår.

: ) Jakob
Avatar billede angelhot Nybegynder
06. juli 2003 - 16:22 #9
Det var lige præsic det jeg mente med det eksempel du har lavet, men skal jeg bare bruge den kode ved det sidste svar du har besvaret? Forvirre mig lidt at du skriver det så mange gange..
Avatar billede jakwag Nybegynder
06. juli 2003 - 16:25 #10
ja, det blev en del forskellige koder før det rigtigt gik i spind : )

Men den sidste kode er den rigtige. Det er også den du kan se i eksemplerne.

Tak for point.
Avatar billede jakwag Nybegynder
06. juli 2003 - 16:27 #11
Det kan godt være at du får problemmer når du skal til at få knapper til at "Gøre noget". Men så må du jo sige til.
Avatar billede angelhot Nybegynder
06. juli 2003 - 16:33 #12
Okay, kigger lige på det i aften for jeg er lige ved at lave animations knapperne i første gang, hvor man køre musen over dem. Dvs. at jeg slet ikke skal bruge symbolet "button" men kun movie clips?
Avatar billede jakwag Nybegynder
06. juli 2003 - 16:35 #13
Præcis. Buttons har kun besgrænsede muligheder når det kommer til actionscript.
Avatar billede angelhot Nybegynder
06. juli 2003 - 16:53 #14
Mange tak for hjælpen. Vender lige tilbage, hvis jeg støder på et problem i aften. Du skal nok få flere points for det :)
Avatar billede angelhot Nybegynder
06. juli 2003 - 19:29 #15
Okay, sådan her kommer det til at lyde:

Jeg har lavet animations knapperne (hvordan de reagerer, når man fører musen over dem)

De bliver ikke ved med at animere, kun 0.2 sek. og derefter er knappen blevet lidt mørkere.
Når jeg fjerner musen fra knappen, skulle den gerne fade tilbage til den normale farve knap.
Når jeg trykker på knappen bliver den mørkere end når man føre musen over.

Dvs. Jeg har et movie clip nu, som er animationsknappen. Dvs. jeg mangler at lave et grafik symbol, som skal vises når jeg har trykket på knappen og ellers den anden funktion, hvor den fader ud skal kodes, right? eller skal der også laves et movie clip der?
Avatar billede angelhot Nybegynder
06. juli 2003 - 19:31 #16
Men jeg har lavet 10 forskellige knapper. Altså de er ikke i samme størrelse af en god grund og hvordan skal jeg kunne skrive det i koden, så den kan kende forskel?
Avatar billede angelhot Nybegynder
06. juli 2003 - 19:35 #17
Jeg laver 10 forskellige movie clips (10 knapper i alt)
Du lavede jo kun en knap og bruge det samme movie clip

Tror nok at jeg har forklaret det rigtig nu.. *g*
Avatar billede angelhot Nybegynder
06. juli 2003 - 21:52 #18
Så har jeg fået lavet det og det funger bare, men hvordan får jeg nu hver enkelt knap til at virke?
Avatar billede jakwag Nybegynder
07. juli 2003 - 08:30 #19
Godmorgen : )

Det kommer selvfølgelig an på hvad den skal gøre... Typisk vil man have en loadmovie eller getURL eller gotoframe på en knap. Men det kan jeg selvfølig ikke vide, da jeg ikke aner hvad det er du laver.

Når du siger funger, mener du så at knapperne virker som de skal eller har du stadig problemmer med scriptet?
Avatar billede angelhot Nybegynder
07. juli 2003 - 14:38 #20
Nej, knapperne virker perfekt :)

Når man skal klikke på nogle af knapperne skal underlinierne dukke op. Går ud fra at det er gotoframe jeg skal bruge der, hvor nogle af knapperne skal åbne en ny .swf fil, da jeg deler hjemmesiden op i flames, for den både skal laves i flash og html afhængig af hvilke emne man skal klikke sig ind på.

Så det er gotoframe, loadmovie og getURL jeg skal bruge. Vil være taknemlig for, hvis du skriver scriptet for mig, for det er lidt svært for mig at skrive videre på din kode. Skriv som et svar.. så får du 60 flere point :)
Avatar billede jakwag Nybegynder
07. juli 2003 - 15:15 #21
Hej

Dit nye script ser sådan her ud:

knap_array = new Array();
allOff = function () {
    var len = knap_array.length;
    for (var i = 0; i<len; i++) {
        this[knap_array[i]].gotoAndStop(1);
        this[knap_array[i]].down = false;
    }
};
newButtonDef = function (name, method, value, target) {
    this[name].onRollOver = function() {
        if (!this.down) {
            this.gotoAndStop(2);
        }
    };
    this[name].onRollOut = function() {
        if (!this.down) {
            this.gotoAndPlay(4);
        }
    };
    this[name].onPress = function() {
        allOff();
        this.gotoAndStop(3);
        this.down = true;
    };
    if(method == 1){
        this[name].onRelease = function() {
            gotoAndStop(value);
        }
    }
    if(method == 2 && isNaN(target)){
        this[name].onRelease = function() {
            loadMovie(value, target);
        }
    }else if(method == 2){
        this[name].onRelease = function() {
            loadMovieNum(value, target);
        }
    }
    if(method == 3){
        this[name].onRelease = function() {
            getURL(value, target);
        }
    }
    knap_array.push(name);
};
Avatar billede jakwag Nybegynder
07. juli 2003 - 15:23 #22
Og her er hvordan du bruger det:

Hvis du vil have at en knap går til et framenummer (2 i dette tilfælde):
//newButtonDef(instanceName, method, frameNumber);
newButtonDef("knap1_mc", 1, 2);


Hvis du vil have at en knap går til en framelabel (slut i dette tilfælde):
//newButtonDef(instanceName, method, frameLabel);
newButtonDef("knap2_mc", 1, "slut");


Hvis du vil lave en loadmovie i en level:
//newButtonDef(instanceName, method, navnPåSwf, level);
newButtonDef("knap3_mc", 2, "minswf.swf", 1);

Hvis du vil lave en loadmovie i et target:
//newButtonDef(instanceName, method, navnPåSwf, target);
newButtonDef("knap3_mc", 2, "minswf.swf", "target_mc");

Hvis du vil lave en getURL:
//newButtonDef(instanceName, method, URL, window);
newButtonDef("knap4_mc", 3, "http://www.contentdepot.dk", "_blank");
Avatar billede jakwag Nybegynder
07. juli 2003 - 15:26 #23
Linerne med // foran skal ikke med det er bare for at vise dig hvad du skal putte ind i metoden.

method = om det skal være getURL eller goto eller hvad

1 = gotoAndStop (enten til et frame nummer eller label)
2 = loadMovie (enten i level eller target)
3 = getURL
Avatar billede jakwag Nybegynder
07. juli 2003 - 15:26 #24
Hov jeg har glemt en gotoAndPlay...
Avatar billede jakwag Nybegynder
07. juli 2003 - 15:27 #25
Dette er det rigtige script!!!:

knap_array = new Array();
allOff = function () {
    var len = knap_array.length;
    for (var i = 0; i<len; i++) {
        this[knap_array[i]].gotoAndStop(1);
        this[knap_array[i]].down = false;
    }
};
newButtonDef = function (name, method, value, target) {
    this[name].onRollOver = function() {
        if (!this.down) {
            this.gotoAndStop(2);
        }
    };
    this[name].onRollOut = function() {
        if (!this.down) {
            this.gotoAndPlay(4);
        }
    };
    this[name].onPress = function() {
        allOff();
        this.gotoAndStop(3);
        this.down = true;
    };
    if(method == 0){
        this[name].onRelease = function() {
            gotoAndPlay(value);
        }
    }
    if(method == 1){
        this[name].onRelease = function() {
            gotoAndStop(value);
        }
    }
    if(method == 2 && isNaN(target)){
        this[name].onRelease = function() {
            loadMovie(value, target);
        }
    }else if(method == 2){
        this[name].onRelease = function() {
            loadMovieNum(value, target);
        }
    }
    if(method == 3){
        this[name].onRelease = function() {
            getURL(value, target);
        }
    }
    knap_array.push(name);
};
Avatar billede jakwag Nybegynder
07. juli 2003 - 15:31 #26
og så er 0 = gotoAndPlay

altså en knap der hedder play_mc og som skal hoppe til frame 4 og begynde at spille skal se sådan her ud:

newButtonDef("play_mc", 0, 4);

istedet for 4 kunne det også være en frame label.

Husk at alt hvad der er numre skal stå uden anførselstegn. Alt hvad der er navne skal være med.
Avatar billede angelhot Nybegynder
07. juli 2003 - 15:42 #27
Den sidste rigtig kode, som du lige har skrevet.. skal jeg erstatte den i stedet for den anden, som du skrev i går eftermiddags?

Hvad er lige forskellen på level og target? og hvordan vælger jeg movie'en, som skal vises i en anden frame i dreamweaver, når jeg trykker på menuen?
Avatar billede jakwag Nybegynder
07. juli 2003 - 15:48 #28
du skal erstatte din gamle kode med den nye.

det du har lavet med:

newButtonDef("play_mc"); osv kan du sagtens lade stå. det skal bare ændres lidt

Du kan loade noget ind i en level som er en slags hukommelse plads i flashplayeren. Target er et hvilket som helst mc som du kan loade noget ind i, og på den måde styre hvor din loadmovie havner.

Du skal se referencen til getURL hvis du vil vide hvordan man henter noget ind i en frame i dreamweaver. Det gøres enten med _parent eller _top. Altså f.eks.:

newButtonDef("knap4_mc", 3, "http://www.contentdepot.dk", "_top");

ellers ved jeg ikke så meget om frames da jeg sjældent arbejder med html o.lign.
Avatar billede angelhot Nybegynder
08. juli 2003 - 14:55 #29
Har desværre stødt på et problem igen.

Mine knapper funker fint. Animationen er som det skal være og tryk funktion virker perfekt. Jeg har som sagt 10 knapperne i og ca. 6 knapper skal der dukke undermenuer frem, når man har klikket på knappen.

Jeg har nu lavet undermenuerne til knap 3 og 4. Jeg har brugt labels funktionen når jeg har trykket på knap 3 virker den funktion også, men når jeg trykker på 4 sker der ingenting.

Hvis jeg refresher siden og trykker på knap 4 først, så virker det men så virker knap 3 ikke og det mærkelig ved det, er at det kun er undermenen til knap 3 som kommer lige meget om det er knap 3 eller 4 jeg trykker på.

Jeg har placeret undermenu til knap 3 i frames 39 med labels.
Jeg har placeret undermenu til knap 4 i frames 40 med labels.
Hvis jeg evt. pytte disse 2 om, så er det kun undermenu 4 som kommer frem selvom jeg trykker på knap 3 eller 4 først.


Her er koden:
Fordi der står unknown ved de fleste knapper er fordi de ikke er i brug.
// newButtonDef(instanceName, method, frameLabel);
newButtonDef("forside", 1, "unknown");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("nyheder", 1, "unknown");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("profil", 1, "profil");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("showcase", 1, "showcase");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("referencer", 1, "unknown");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("tutorials", 1, "unknown");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("kontakt", 1, "unknown");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("links", 1, "unknown");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("forum", 1, "unknown");

// newButtonDef(instanceName, method, frameLabel);
newButtonDef("gæstebog", 1, "unknown");
Avatar billede jakwag Nybegynder
08. juli 2003 - 15:07 #30
som sagt kan du godt slette alle linier der hedder:
// newButtonDef(instanceName, method, frameLabel);
Dem lavede jeg bare som en del af forklaringen til hvordan de skulle bruges.

Jeg har lige prøvet og kan sagtens få det til at virke.

Tjek at du ikke er kommet til at lægge noget andet kode PÅ selve knappen.

Står der noget script i andre frames?
Hvis du kan opload din film, kigger jeg på den imorgen formiddag.
Avatar billede angelhot Nybegynder
08. juli 2003 - 15:14 #31
øhhhmmm.. jeg har ikke pillet ved noget kode, men genstartede flash max og ligepludselig virkede det..
Avatar billede jakwag Nybegynder
08. juli 2003 - 15:14 #32
Det var da dejligt : )
Avatar billede angelhot Nybegynder
08. juli 2003 - 15:18 #33
yes og nu virker det ikke.. er totalt lost :-/
Avatar billede angelhot Nybegynder
08. juli 2003 - 15:20 #34
jeg prøver lige selv og løser det.. og hvis ikke det lykkedes, så jeg oploader jeg det til i morgen eftermiddag.. okay
Avatar billede jakwag Nybegynder
08. juli 2003 - 15:21 #35
hehehe. opload din film eller send den til mig jakob@contentdepot.dk Så kigger jeg på den.
Avatar billede jakwag Nybegynder
08. juli 2003 - 15:21 #36
Okay
Avatar billede angelhot Nybegynder
08. juli 2003 - 15:27 #37
Så blev jeg lidt klogere.. jeg manglede bare en stop action ved hvert labels og så kører det ellers bare.. dejligt ;)
Avatar billede angelhot Nybegynder
08. juli 2003 - 15:28 #38
nej nu har jeg nu aldrig.. så virker det ikke mere.. dooh
Avatar billede jakwag Nybegynder
08. juli 2003 - 15:31 #39
ha ha haha! nu virker det - nu virker det ikke - nu virker det - nu virker det ikke...
Avatar billede angelhot Nybegynder
08. juli 2003 - 15:34 #40
ja, når jeg lige åbner det i flash mx, så virker det, når jeg tester det i programmet, men når jeg gemmer det i en movie, så virker det både ikke i flash programmet eller i filen movie :-/ total mærkelig

Jeg har sendt dig filmen til din e-mail nu.

Håber du kan se problemet for jeg fatter virkelig hat nu
Avatar billede angelhot Nybegynder
08. juli 2003 - 15:36 #41
nå fuck.. virkede ikke.. sender lige fra en anden e-mail.. 2 min..
Avatar billede angelhot Nybegynder
08. juli 2003 - 19:25 #42
du behøver ikke at kigge på det.. jeg brugte bare framenummer i stedet for det bøvlede framelabel og det andet virker.
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

IT-JOB

Capgemini Danmark A/S

Java Engineer

Politiets Efterretningstjeneste

Data engineer til PET

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer