Avatar billede royalexport Nybegynder
12. november 2002 - 15:13 Der 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?
Avatar billede el_fredo Praktikant
12. november 2002 - 15:17 #1
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.
Avatar billede royalexport Nybegynder
12. november 2002 - 15:21 #2
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.
Avatar billede el_fredo Praktikant
12. november 2002 - 15:27 #3
Sorry. Jeg kender ikke til Lingo. Jeg kan ikke hjælpe dig med det tekniske.
Avatar billede jmc Nybegynder
12. november 2002 - 15:38 #4
Du kan benytte drag/drop behavior fra library.
animation > interactive > snap to grid.
Find den også i hjælpen.
Avatar billede royalexport Nybegynder
12. november 2002 - 15:58 #5
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 ??
Avatar billede jmc Nybegynder
12. november 2002 - 17:00 #6
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)
Avatar billede sparkl Nybegynder
13. november 2002 - 10:32 #7
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
Avatar billede royalexport Nybegynder
13. november 2002 - 13:10 #8
Det ser godt sparkl, jeg prøver det af i morgen, og så vender jeg tilbage.
Avatar billede royalexport Nybegynder
17. november 2002 - 10:49 #9
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?
Avatar billede sparkl Nybegynder
18. november 2002 - 11:04 #10
Hej igen,

istedet for at definere variablerne som globale værdier kan du definere dem som properties. Det burde løse dit problem..

eks:

property bDrag, pointDistance, bLocked, lockWithin

osv.....
Avatar billede royalexport Nybegynder
19. november 2002 - 11:56 #11
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....
Avatar billede royalexport Nybegynder
19. november 2002 - 11:57 #12
her er koden btw:

property bDrag, pointDistance, bLocked, lockWithin

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
Avatar billede royalexport Nybegynder
19. november 2002 - 12:03 #13
Weyy...nu virker det !! Var vist bare mig der ikke tænkte mig om :) Takker for hjælpen, 60 point til dig !!
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
Kurser inden for grundlæggende programmering

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