Avatar billede rthuls Nybegynder
13. juni 2004 - 22:06 Der er 14 kommentarer og
1 løsning

swapDepths med mere end to movieclips

Jeg vil gerne kunne bytte om på mine movieclips dybder, således at når man klikke på et mc, får det den øverste dybde og det mc der før var øverst bliver næstøverst, osv.

Jeg har følgende script, som jeg synes burde virke, men som ikke gør det. Er der nogen der kan hjælpe?

var highest = "2";
for (var i = 0; i<3; i++) {
    mc = this.attachMovie("window", "window"+i, i, {_x:100*i});
    mc.onPress = function() {
        this.swapDepths("window"+highest);
        highest = substring(this._name, 7, -1);
        startDrag(this);
    };
    mc.onRelease = function() {
        stopDrag();
    };
}
Avatar billede pyroman Nybegynder
13. juni 2004 - 22:23 #1
skal det kun virke med 2 mc'er eller rigtig mange?
Avatar billede pyroman Nybegynder
13. juni 2004 - 22:31 #2
Jeg vil umiddelbart tro at dette vil virke:


var highest = 2;
function pressHandler (){
  for(var i = this.getDepth(); i < highest; i++){
    this._parent["window"+i].swapDepths(i+1);
  }
  this.startDrag();
}
for (var i = 0; i <= highest; i++) {
  mc = this.attachMovie("window", "window"+i, i, {_x:100*i});
  mc.onPress = pressHandler;
    mc.onRelease = function() {
        stopDrag();
    };
}
Avatar billede barklund Nybegynder
13. juni 2004 - 22:33 #3
Det ville være lidt smartere blot at flytte det nye "endnu" længere foran (og lidt optimering á la barklund):

var highest = 0;
function drag() {
    this.swapDepths(++highest);
    this.startDrag();
}
for (var i = 0; i<3; i++) {
    mc = this.attachMovie("window", "window"+i, ++highest, {_x:100*i, onPress: drag, onRelease: stopDrag});
}
Avatar billede pyroman Nybegynder
13. juni 2004 - 22:36 #4
Tjoo - men hvis man nu har reserveret nogle af de ovenliggende lag til andre ting, så kan det jo ikke bruges...

Men du har ret - lidt simplere - og man undgår en for-løkke
Avatar billede rthuls Nybegynder
13. juni 2004 - 23:03 #5
pyroman >> det ser ikke ud til at dit script virker helt efter hensigten.
barklund >> smart måde at gøre det på. Smider du et svar?
Avatar billede barklund Nybegynder
13. juni 2004 - 23:07 #6
Det kan du tro - men som sagt "genbruger" scriptet ikke dybderne, men smider derimod det nye clip endnu højere op. hvis du har andre movieclips "deroppeaf", så vil de blive indhentet på et tidspunkt...
Avatar billede barklund Nybegynder
13. juni 2004 - 23:10 #7
rthuls - du har 16 åbne spørgsmål, heraf nogle meget gamle. Se lige at få dem lukket for god ordens skyld: http://www.eksperten.dk/list.phtml?sort=&order=DESC&status_1=on&status_2=on&spm_creator=rthuls&spm_part=&spm_answer=&find=&engine=exp

Så kan du også leve op til den "meget gode" karma jeg netop har tildelt dig :)

// Morten Barklund
Avatar billede pyroman Nybegynder
13. juni 2004 - 23:19 #8
jeg tænkte mig ikke rigtigt omt da jeg skrev mit script - men dette virker ;)

var highest = 2;
function drag() {
    for (var i = this.getDepth(); i<highest; i++) {
        this._parent.getInstanceAtDepth(i).swapDepths(i+1);
    }
    this.startDrag();
}
for (var i = 0; i<=highest; i++) {
    mc = this.attachMovie("window", "window"+i, i, {_x:100*i, onPress: drag, onRelease: stopDrag});
}


Men Mortens er lidt hurtigere... ;)
Avatar billede barklund Nybegynder
13. juni 2004 - 23:21 #9
getInstanceAtDepth er Flash7 only - just fyi, rthuls :)
Avatar billede pyroman Nybegynder
13. juni 2004 - 23:36 #10
Morten nu trækker du den ;)

Men kan du så blive tilfreds! :

var highest = 2;
var depthArr = new Array();
function drag() {
    var tmpmc
    for (var i = this.getDepth(); i<highest; i++) {
        tmpmc = this._parent.depthArr[i];
        tmpmc.swapDepths(i+1);
        this._parent.depthArr[i] = this._parent.depthArr[i+1];
        this._parent.depthArr[i+1] = tmpmc;
    }
    this.startDrag();
}
for (var i = 0; i<=highest; i++) {
    mc = this.attachMovie("window", "window"+i, i, {_x:100*i, onPress: drag, onRelease: stopDrag});
    depthArr[i] = mc;
}
Avatar billede pyroman Nybegynder
13. juni 2004 - 23:37 #11
...dur fra og med player 6!
Avatar billede rthuls Nybegynder
13. juni 2004 - 23:51 #12
Tak for karma Barklund! Jeg er straks gået i gang med at få lukket alle de gamle spørgsmål, men gider du så ikke hjælpe mig ved at ligge et svar her: http://www.eksperten.dk/spm/461055/ ;o)

Hehe...pyroman du bør næsten også få point for din energiske indsats :o)
Smid et svar så finder jeg lidt flere point frem til jer imens.
Avatar billede pyroman Nybegynder
13. juni 2004 - 23:58 #13
ligemeget med point - det var ikke derfor jeg lavede den ;)
Avatar billede rthuls Nybegynder
14. juni 2004 - 00:10 #14
helt ok, men tak for hjælpen anyway :)
Avatar billede rthuls Nybegynder
14. juni 2004 - 00:16 #15
hmmm...linket http://www.eksperten.dk/spm/461055/ fører til katagorien Spørgsmål & Svar (http://www.eksperten.dk/spm/), men hvis jeg fjerner den sidste backslash fra linket virker det fint: http://www.eksperten.dk/spm/461055 ...mystisk
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