Avatar billede alivedk Nybegynder
26. maj 2002 - 23:10 Der er 41 kommentarer og
3 løsninger

Drag changeprop. ting

Jeg har lavet en lille film.

Forklaring.

knap1 = knappen som man kan drag'e rundt på skærmen med!

billede1 = indeholder 2 frames. i første er der ingenting .. men i andet indeholder det et billede!

changer = felt.. som kører denne action: når knap1 dragges over dette felt.. og man giver slip på knap1, ændrer man prop. i billede1 så den går til frame2 (hvor billedet er).

kode for knap1:
onClipEvent (load) {
_root.billede1.gotoAndStop(1);
}
on (press) {
    startDrag ("/knap1", true);
    /:X = getProperty("/knap1", _x);
    /:Y = getProperty("/knap1", _y);
}
on (release) {
    stopDrag();
}

Kode for changer:
onClipEvent (enterFrame) {
  if (this.hitTest(_root.knap1)) {
    _root.billede1.gotoAndStop(2);
  }
}


MIT problem er.. at når jeg dragger knap1 over feltet.. skifter den prop. på billede1 med det samme.. og ikke når jeg giver slip på knappen(altså mens den er over feltet).. endnuvidere.. ville jeg gerne have sådan at knap1 går tilbage til original position når man slipper musknappen... der hvor man startede med at dragge den..

en anden ting.. "changer" skulle jo gerne kunne change prop. for flere billeder.. og kende forskel på hvilken knap man dragger over det.. hvordan gør jeg det.. med en else statement??

måske lidt.. for.. ehmm.. ja forvirende.. er det for mig.. som ikke kan få det til at virke...

jeg har lavet et eksempel: www.4b4.dk/movie.fla

Håber nogen kan hjælpe mig
Avatar billede paask Nybegynder
27. maj 2002 - 01:09 #1
Hej alivedk.

Jeg har lige lavet et eksempel til dig, du kan se og hente det her:
http://www.imma.dk/kaare/eksperten/dragNdrop.html
http://www.imma.dk/kaare/eksperten/dragNdrop.fla

Istedet for at benytte 'changer' har jeg bare påsat al kode på selve det movieclip der dragges. Du kan nu tilføje så mange felter, med tilhørende billede movieclips, som du ønsker. Det havde måske været nemmere at samle billede og felt hitarea i ét, men det kommer jo an på din opbygning som  jeg ikke kender. Dette eksempel skulle virke efter din hensigt.

Koden på det draggede mc ser således ud:

onClipEvent (load) {
    var antalBilleder = 3;
    var dragged = false;
    var lastDrop;
    function releaseDrag() {
        for (i=1; i<=antalBilleder; i++) {
            if (this._droptarget == "/felt"+i) {
                _root["billede"+i].gotoAndStop(2);
                lastDrop = "felt"+i;
            } else if (this._droptarget == "/startArea") {
                _root["billede"+i].gotoAndStop(1);
            }
        }
        for (i=1; i<=antalBilleder; i++) {
            if (_root["felt"+i]._name != lastDrop) {
                _root["billede"+i].gotoAndStop(1);
            }
        }
    }
}
onClipEvent (mouseDown) {
    if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
        this.startDrag(true);
        dragged = true;
    }
}
onClipEvent (mouseUp) {
    if (dragged) {
        releaseDrag();
        dragged = false;
        stopDrag();
    }
}


Felterne hedder felt1, felt2, felt3 og billede mc's hedder billede1, billede2, billede3. Hvis du vil tilføje flere skal du huske at give dem navne med et tal der fortsætter talrækken. Ligeledes skal variablen antalBilleder, der nu er 3, ændres til det antal du forhøjet til.

Håber det er som du ønsker, hvis du vil have uddybning eller lignende så stil endeligt spørgsmål.

mvh
paask
Avatar billede alivedk Nybegynder
27. maj 2002 - 10:56 #2
paask: virker fint.. men mangle dog stadig det jeg bad efter. Det med movieclip billede.. var bare et eksempel.. når jeg har fået det til at virke.. vil jeg bruge en form for loadmovie (så jeg kan sætte en preloader på billederne)..

Jeg vil kun bruge et felt til billederne.. men flere knapper til at dragge med.. her skal jeg bruge en if.. else if.. else if.. funktion.. og hvordan får jeg knappen til at springe tilbage til start position?

(jeg har prøvet at smide :

onClipEvent (mouseDown) {
    if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
        this.startDrag(true);
        dragged = true;
    }
}

ind istedet for min gamle kode.. men så virker det ikke :/
Avatar billede alivedk Nybegynder
27. maj 2002 - 11:13 #3
Paask: Jeg er utrolig taknemmelig for at du gider hjælpe.. men det ville være 10x mere overskueligt.. hvis jeg kunne fixe de ting/problemer jeg nu har, ved at gå ind i min egen "kode", og lave de rettelser/tilføje hvad der nu skal tilføjes.. :)
Avatar billede hoejrup Nybegynder
27. maj 2002 - 11:32 #4
Hvorfor kan du ikke bare lave en drag knap pr. billede. Sætte en start _x og _y på billedet, så du kan nulstille din start position?

/per
Avatar billede alivedk Nybegynder
27. maj 2002 - 11:37 #5
hoejrup: det er menningen at jeg vil have xantal knapper.. som jeg alle kan dragge ind i et felt.. og derved loade forskellige movies. Men som den er nu .. vises frame2(kunne ligeså godt være en loadmovie funktion.. laver det senere).. med det samme man er over feltet.. og ikke når man slipper knappen mens den er over feltet!

Jeg aner ikke hvordan jeg skal lave så den hopper tilbage til original position! .. :/
Avatar billede hoejrup Nybegynder
27. maj 2002 - 11:48 #6
Hvis du skal dragge x antal knapper, så skal du lave hver eneste knap om til et draggable movieclip.

1. lav en knap
2. lav knappen om til et movieclip

/per
Avatar billede alivedk Nybegynder
27. maj 2002 - 12:04 #7
Jeps.. det ved jeg godt.. flere.. knapper.. og en else/if funktion på mit changer area.. den har jeg fået til at virke.. men hvordan får jeg mc'erne til at hoppe tilbage til start.. og mit billede skifter stadig med det samme mc't er over changer.. og ikke når jeg slipper dem...
Avatar billede hoejrup Nybegynder
27. maj 2002 - 12:09 #8
Du kunne kigge lidt i dit andet spørgsmål.

/per
Avatar billede paask Nybegynder
27. maj 2002 - 12:10 #9
Ok, så lad mig lige blive sikker. Du vil have mange draggable knapper, alt efter hvilken knap der bliver dragged, og derefter dropped, på ét og samme felt skal et billede loades og vises.

Jeg har først set din tråd i de andre spm. nu og dette site http://lab.nitrofx.com/ . Det er jo præcist hvad du har allerede?! Billederne skiftes først når de droppes og de ryger tilbage til deres start position...

Hvor er det så problemet ligger ?
Avatar billede alivedk Nybegynder
27. maj 2002 - 12:20 #10
Billederne skal først skifte når man trækker et mc over et område OG giver slip på det. Som det er nu .. skifter billedet med det samme man er over området! (drag and drop)...

anden ting.. knapperne som man dragger skal hoppe tilbage til start-position når man giver slip på dem...
Avatar billede hoejrup Nybegynder
27. maj 2002 - 12:24 #11
Sæt følgende på dit mc:

on (release) {
  _root.ditmovieclipinstancenavn.gotoAndPlay(2);
  stopDrag();
}

Så start dit mc først, når du slipper din mus knap.

/per
Avatar billede hoejrup Nybegynder
27. maj 2002 - 12:26 #12
Sættes på dit mc:

onClipEvent (load){
  startx = _root.Tracker._x;
  starty = _root.Tracker._y;
}

Sættes på din knap:

on (release) {
  _root.ditmovieclipinstancenavn.gotoAndPlay(2);
  stopDrag();
  _root.Tracker._x = startx;
  _root.Tracker._y = starty;
}

/per
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:06 #13
Nu hoppper mc't tilbage(knap1) når jeg slipper.. fjong :)

men.. hvordan fixer jeg så .. den først skifter til frame 2.. når jeg slipper knappen?.. altså skifter kun hvis jeg slipper knappen over området!

det kan:
on (release) {
  _root.ditmovieclipinstancenavn.gotoAndPlay(2);
  stopDrag();
}

ikke gøre..

nuværende kode.. som skifter når man dragger over:
onClipEvent (enterFrame) {
  if (this.hitTest(_root.knap1)) {
    _root.billede1.gotoAndStop(2);
  }
}
Avatar billede paask Nybegynder
27. maj 2002 - 13:11 #14
Jeg kan desværre ikke helt følge dig, for det er da netop hvad der sker på http://lab.nitrofx.com/ nu? Først når der slippes bliver et billede udskiftet med det draggede...
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:12 #15
paask: jeps NEMLIG.. først når man slipper sin knap over "området" .. skifter billedet.. Som det er nu skiftes billedet med det samme man bevæger knappen ind over området..
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:14 #16
Undskylder at jeg måske er lidt "tungnem"... :)
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:32 #17
Du sætter en usynlig knap på dit movieclip med as:

on (release) {
  _root.slip = 1;
}

onClipEvent (enterFrame) {
  if (this.hitTest(_root.knap1)) {
    if (_root.slip == 1) {
      _root.slip = 2;
      _root.billede1.gotoAndStop(2);
    }
  }
}

/per
Avatar billede barklund Nybegynder
27. maj 2002 - 13:37 #18
Du kunne også bare ændre enterFrame til mouseUp :o)
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:37 #19
onClipEvent (enterFrame) {
  if (this.hitTest(_root.knap1) && _root.slip == 1) {
      _root.slip = 2;
      _root.billede1.gotoAndStop(2);
  }
}

/per
Avatar billede barklund Nybegynder
27. maj 2002 - 13:38 #20
Næ... den findes da ikke i F5?

så må det være:

onClipEvent (keyUp) {
    if (this.hitTest(_root.knap1) && Key.getCode() == 1)
        _root.billede1.gotoAndStop(2);
}
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:38 #21
hvad er "slip" ? ..
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:39 #22
barklund> Ja, det kunne man gøre. :o)

/per
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:39 #23
Jeg har prøvet at sætte begge coder på min "område".. men ingen af dem virker...
Avatar billede barklund Nybegynder
27. maj 2002 - 13:41 #24
Jojo mouseUp findes i F5 - brug den i stedet for enterFrame og glem alt det andet...:

onClipEvent (mouseUp) {
    if (this.hitTest(_root.knap1))
        _root.billede1.gotoAndStop(2);
}
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:41 #25
MouseUp findes i Flash 5:

onClipEvent (mouseUp) {
if (this.hitTest(_root.knap1)) {
    _root.billede1.gotoAndStop(2);
  }
}

/per
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:42 #26
barklund: den virker til gengæld :)
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:43 #27
onClipEvent (mouseUp) {
    if (this.hitTest(_root.knap1))
        _root.billede1.gotoAndStop(2);
    else
    if (this.hitTest(_root.knap2))
        _root.billede1.gotoAndStop(3);
}

virker.. danke.. ehm.. dem som har hjulpet på dette spørgsmål.. kan i ikke lige indgive et svar.. så fordeler jeg pointene efter hvem der har hjulpet mest!

Siger mange tak for hjælpen.. og ja.. Jeg HAR bestilt en bog om actionscript! :P
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:44 #28
alivedk> Det kommer an på hvordan du gør det, vi kan jo ikke se din kode.

/per
Avatar billede barklund Nybegynder
27. maj 2002 - 13:44 #29
hihi :o)

jeg kunne ikke lige huske, hvad der var kommet til og hvad der fandtes dengang... måtte på macromedia.com for at finde ud af det :o)
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:45 #30
Du kan godt få et svar. Lukker du så det andet spørgsmål?

/per
Avatar billede barklund Nybegynder
27. maj 2002 - 13:45 #31
Jeg vil da gerne have et enkelt point eller højst 2 for mit "mouseUp"-input :o)
Avatar billede barklund Nybegynder
27. maj 2002 - 13:46 #32
*host*
Avatar billede paask Nybegynder
27. maj 2002 - 13:46 #33
Jeg har begge versioner kørende for altid at kunne tjekke det :0)

alivedk, den metode er meget lig min til at begynde med, skal jeg ikke lige gøre den dynamisk frem for at du skal have en masse if - else if- sætninger?
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:47 #34
barklund> Kan du ikke lave et svar, så tager vi det som det kommer.... :o)

/per
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:48 #35
paask: jow.. ville være lækkert.. :)
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:48 #36
hoej: det andet sprg. er da lukket for længs :)
Avatar billede alivedk Nybegynder
27. maj 2002 - 13:49 #37
(jeg smutter lige ned i byen en tur.. ordner point når jeg kommer tilbage).. håber det er ok! Endnu engang tak for hjælpen.
Avatar billede paask Nybegynder
27. maj 2002 - 13:51 #38
'ere u go:

onClipEvent(load){
    var antalBilleder = 3; // ret til korrekt antal her
    function releaseDrag(){
        for (i=0;i<=antalBilleder;i++){
        if(this.hitTest(_root["knap"+i])){
            _root.billede1.gotoAndStop(i+1);
            }   
        }
    }
}

onClipEvent(mouseUp){
releaseDrag();
}

God bytur... hmmm :0)
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:52 #39
alivedk> Har du lukket 'Nitrolab funktion' spørgsmålet?

/per
Avatar billede hoejrup Nybegynder
27. maj 2002 - 13:52 #40
Velbekomme!

/per
Avatar billede barklund Nybegynder
27. maj 2002 - 16:42 #41
Nææ... 4 point for at sige "mouseUp"...

Så skulle her være for 100 point mere:

mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp, mouseUp.

Hihi... :o)
Avatar billede alivedk Nybegynder
27. maj 2002 - 18:25 #42
barklund: ehh.. er det uretfærdigt?.. vil med glæde give dig flere point.. hvis det er standard! :/
Avatar billede barklund Nybegynder
27. maj 2002 - 18:29 #43
Nejnej.. jeg sagde jo selv 1-2 point... Jeg morede mig bare over at man kunne få 4 point for så lidt... og gik derefter i selvsving :o)
Avatar billede alivedk Nybegynder
28. maj 2002 - 23:24 #44
paask: Måske det her sprgs. var noget for dig.. det ser ud til at du er rimlig heftig til dynamisk scripting i flash.. og det lader til at andre ikke kan finde ud af det..

http://www.eksperten.dk/spm/217418
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