Avatar billede mikem Nybegynder
30. april 2001 - 09:55 Der er 9 kommentarer

HJÆÆÆLP!!!

Jeg er igang med følgende script:

on mousedown
 
  set pos = sprite(2).locH
  --    put pos \"hojre locH\"
  if (sprite(2).locH > 28) and (sprite(2).locH < 448) then
    sprite(2).locH = pos +20

    updateStage
  end if
end

Mit problem er at jeg vil have det til at fungere som en scroll så den bevæger sig i et loop når museknappen holdes nede....nogen ideer?

VH Mike
Avatar billede kanding Nybegynder
30. april 2001 - 10:31 #1
prøv at sætte dette script til i stedet for din exitframe handler i score\'n:

property pStartPos

-- start med at skrive din startpos
on beginsprite me
pStartPos = 10
end

on exitFrame
if the mousedown then
if (sprite(2).locH < 448) then
    sprite(2).locH = sprite(2).locH +20
else
sprite(2).locH = pStartPos
end if
end if
go the frame
end

nu vil sprite(10) kører så længe den er under 448 og hvis ikke så starte igen ved 10

Håber at det var det du ville

Avatar billede lingoman Nybegynder
03. maj 2001 - 19:40 #2
Hej Mike,

Jeg går ud fra at du vil have spriten til at bevæge sig vandret i 20 pixel hop mellem værdierne 28 og 448.

Denne \"behavior\" kan enten gå ensrettet fra ventre til højre(sæt direction = 1), eller loope den anden vej når den overskrider 28 og 448 (sæt Direction  = 2).

Vælg \"behavior\" i castmember info dialogboks.
Selekter spriten og tilføj denne behavior.
Du får også brug for en

on exitFrame
  go to the frame
end

i frameScriptet.

Hvis vi tager fejl i fortolkingen af dit spørgsmål, håber jeg du vil uddybe det nærmere.

Her er selve behavioren.
-------------------------------


property minH
property maxH
property mySprite
property moveH
property direction

on beginSprite me
  minH = 28
  maxH = 448
  moveH = 20
  mySprite = the spriteNum of me
  direction = 2  --tovejs bevægelse.  sæt direction = 1 hvis den blot skal standse ved 448
end

on exitFrame me
  if the MouseDown then
    moveBackNforth me 
  end if
end

on MoveMe me
  set myH = sprite(mySprite).locH
 
  if (myH < maxH) and (myH > minH) then
    sprite(mySprite).locH = sprite(mySprite).locH + moveH
  end if
end


on moveBackNforth me
  set myH = sprite(mySprite).locH
 
  if (myH < maxH) and (myH > minH) then
    nothing
  else
    if direction = 2 then
      set moveH = -moveH
    else
      exit
    end if
  end if
  sprite(mySprite).locH = sprite(mySprite).locH + moveH
end

-------------------

Held og lykke!

mvh

Geo
Avatar billede lingoman Nybegynder
23. juni 2001 - 09:40 #3
Hej Mike,

Hvis du har fundet en anden løsning må du lige fortælle os hvad det er. Vi er jo trodsalt kommet med vores bud på en løsning.

Husk lige også at lukke dit spørgsmål!

mvh Geo
Avatar billede mozart Nybegynder
17. juli 2001 - 12:22 #4
er det mig der har misforstået noget, hvorfor vil i ikke bruge en repeat.

on mouseDown me
  set pos = sprite(2).locH
  repeat while the mouseDown   
    --    put pos \"hojre locH\"
    if (sprite(2).locH > 28) and (sprite(2).locH < 448) then
      sprite(2).locH = pos +20
    end if
    updateStage
  end repeat
end

Så slipper du os for at ha\' en if i en exitFrame der bruger lidt kræft.
Avatar billede lingoman Nybegynder
17. juli 2001 - 13:04 #5
Det kunne du godt, men.......

mozart> Dit script vil faktist optage all processor tid!

Når du laver sådan en stram repeat løkke kan vil alle andre events stå i kø indtil the mouseDown = false.
Det er någet man bør undgå i det omfang man kan.
Til dette script er en check i en exitFrame handler mere end rigeligt.

men det er rart at vide at der trodsalt er andre end Mike som læser denne side.

mvh Geo
Avatar billede kanding Nybegynder
17. juli 2001 - 15:50 #6
En tredie mulighed er(meget basic):

on startMove
timeout(\"mover\").new(10, #moveSprite)
end

on moveSprite
if sprite(10).loch < 500 then
sprite(10).loch = sprite(10).loch + 5
else

timeout(\"mover\").forget()
end if

end

Avatar billede lingoman Nybegynder
17. juli 2001 - 16:10 #7
> kanding,

Very Neat!
Avatar billede lingoman Nybegynder
31. juli 2001 - 22:57 #8
Luk nu spørgsmålet....
Avatar billede lingoman Nybegynder
29. september 2001 - 11:09 #9
Luk venligst dit spørgsmål ved at selv oprette et svarfelt og derefter acceptere det. Du kan derved få dine point tilbage :)
                      mvh geo
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