12. november 2002 - 15:13Der er
12 kommentarer og 1 løsning
Træk og slip
Jeg skal lave et program, hvor man ved at holde den venstre museknap nede kan flytte rundt på et billede. Hvis billede flyttes det rigtige sted hen på skærmen skal det "låses fast". Kan I nogle eksempler eller ved I, hvordan man gør?
Jeg ved jo ikke hvor meget af funktionaliteten du allerede har lavet, men prøv at lav det sådan, at når man forsøger at trække billedet kontrolleres først om det er sat til fastlåst tilstand. Hvis dette ikke er tilfældet, kan man trække billedet. Sæt attributten til fastlåst, hvis man sætter billedet det rigtige sted hen. Så slipper du for at skulle bøvle med at "låse billedet". Det gør du med en simpel attribut.
Takker for svaret - da jeg er Director/Lingo newbie ville jeg gerne hvis du kunne komme med et "kode"-eksempel. Jeg har i øvrigt ikke implementeret noget af det endnu, blot smidt de billeder ind jeg skal bruge.
Mange tak svaret, det ser ud til at virke fint!! Dog er jeg lidt usikker på hvordan man definerer sit grid den skal "snappe" til. Med andre ord så er mit billede placeret midt i skærmbilledet, og det skal flyttes ned i venstre hjørne hvor det skal placeres i en ramme. Hvordan definerer man det grid ??
har du prøvet hjælpe eller læse i toppen af scriptet som de generere og som du finder ved at åbne scriptet fra cast member. På denne måde lære du bedst. ;o)
Denne behavior tager den sprite den er lagt, gør den dragable, og gør at den låser sig til reference punktet på det der ligger i spritechannel 2. Hver opmærksom på objekternes reference punkter, altså den værdi som indeholder objekternes position (x,y) i forhold til øverste venstre hjørne af stage'n.
global bDrag, pointDistance, bLocked, lockWithin
on beginSprite bDrag = false pointDistance = 0 bLocked = false lockWithin = 15 end
on mousedown me if bLocked = false then bDrag = true pointDistance = sprite(me.spritenum).loc - the clickLoc end if end
on mouseup me if bLocked = false then bDrag = false if abs(sprite(me.spritenum).loch - sprite(2).loch) < lockWithin and abs(sprite(me.spritenum).locv - sprite(2).locv) < lockWithin then sprite(me.spritenum).loc = sprite(2).loc bLocked = true end if end if end
on exitframe me if bDrag = true then sprite(me.spritenum).loc = the mouseloc + pointDistance end if end
Hej sparkl! Scriptet virker fint, når jeg bruger een sprite(billede1), der skal låse til forskellige referencepunkter, men hvis jeg har flere sprites(billeder), som skal flyttes rundt med og låses, så går det galt. Hvis jeg fx vil flytte med billede2 så hopper billede1 henover billede2. Dette sker når jeg trykker ned på venstre musetast, altså ved "on mousedown me" funktionen. Jeg har opdateret "on mouseup me" funktionen, så den passer til brug af flere sprites(billeder). Som løsning har jeg prøvet at "clear" de globale variabler, men uden held. Har du eventuel nogle forslag?
Hmmm...nu har jeg ændret den første linie af scriptet til: "property bDrag, ...osv" - men det ser ikke ud til at virke - scriptet fejler ikke, men man kan bare ikke flytte på billederne =( Var det ikke kun den første linie der skulle laves om ?? Eller har jeg glemt noget....
on beginSprite member(1).regpoint=point(0,0) bDrag = false pointDistance = 0 bLocked = false lockWithin = 50 end
on mousedown me if bLocked = false then bDrag = true pointDistance = sprite(23).loc - the clickLoc end if end
on mouseup me if bLocked = false then bDrag = false if abs(sprite(23).loch - sprite(1).loch) < lockWithin and abs(sprite(23).locv - sprite(1).locv) < lockWithin then sprite(23).loc = sprite(1).loc bLocked = true end if
if abs(sprite(23).loch - sprite(2).loch) < lockWithin and abs(sprite(23).locv - sprite(2).locv) < lockWithin then sprite(23).loc = sprite(2).loc bLocked = true end if end if end
on exitframe me if bDrag = true then sprite(23).loc = the mouseloc + pointDistance end if end
Weyy...nu virker det !! Var vist bare mig der ikke tænkte mig om :) Takker for hjælpen, 60 point til dig !!
Synes godt om
Ny brugerNybegynder
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.