26. maj 2002 - 23:10Der 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...
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.
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?
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.. :)
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! .. :/
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...
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...
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...
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...
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..
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
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?
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); } } } }
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..
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.