Avatar billede sf Nybegynder
29. november 2004 - 08:42 Der er 1 løsning

problemer med at stoppe koden.

jeg sidder og arbejder med et projekt i director og lingo og kan ikke forstå hvorfor jeg ikke kan for timeren i denne kode til at stoppe. jeg har nogle ting der køre rundt og dem skulle jeg geren have stoppet engang imellem


her er min kode:
¨
global flyt,lige,nymillis, nyx,nyy
property sp,sp2
property millis
property xSlider, ySlider

on beginsprite(me)
  sp = sprite(me.spritenum)
  sp2 = sprite(13)
  millis = the milliseconds
  xSlider = sprite(6)
  ySlider = sprite(10)
  flyt = 1
end

on exitframe()
  -- drive p
 
  member("flyt").text = String(flyt)
  if flyt=1 then
    if lige = 1 then
      xscale = nyx
      yscale = nyy
    end if
        member("sx").text = String(xscale)
      member("sy").text = String(yscale)
    lige = 0
    p = eTime(20000)
    pX = 2.5
    pY = 1.0
   
    -- no bias
   
    -- p drives animation
    centX = sprite(1).loch 
    centY = sprite(1).locv
    xscale = pX * (150 - 0) + 0 
    yscale = pY * (150 - 0) + 0
    t = p * 2 * pi
    t2 = p * 2 * pi -2 --afstand mellem planeter
   
    sp.loch = cos(t) * xscale + centX
    sp.locv = -sin(t) * yscale + centY
    sp2.loch = cos(t2) * xscale + centX
    sp2.locv = -sin(t2) * yscale + centY
   
   
  --  rotation
    --st = sin(t)
  -- if xscale = 0 then xscale = .000001 
  --  ct = cos(t) * yscale / xscale
--    if ct = 0 then ct = .000001
  --  r = atan(-st / ct) + pi * ((1 - ct/abs(ct)) / 2.0) - pi/2  --slope
  -- sp.rotation = r * 180/pi
  -- sp2.rotation = r * 180/pi
  else
    pause member ("circular")
   
    eTime(-1)
    if lige = 1 then
      nyx= xscale 
      nyy = yscale
    end if
    member("sx").text = String(xscale)
    member("sy").text = String(yscale)
    lige = 0
  end if
 
 
end

on eTime(period)
  if flyt = 1 then
    elapsed = (the milliseconds) - millis
    return (elapsed mod period) / float(period) -- 0->1
  end if
end

prøver at stoppe det med:
  if flyt=1 then

virker også ok de stopper men når man starter igen har koden kørt videre og de hopper et stykke frem.

kan få director filen hvis det er.
Avatar billede kanding Nybegynder
29. november 2004 - 09:14 #1
Brug et såkaldt flag til at styre.
Øverst i din exitframe, lige under on exitframe har du en variable, stopLoop, som du tester på

if stopLoop then
return
end if

For at gøre håndteringen lettere så lav to handlers til at starte og stoppe:

on start_loop me
stopLoop = false
end

on stop_loop me
stopLoop = true
end

Så kan du starte og stoppe exitFrame inde i scriptet, men også udefra ved at kalde:

sprite(1).start_loop()

Her antager jeg at det er sprite 1, da jeg ikke ved hvor den ligger.
Husk at stopLoop skal være en property.

En anden metode er at tilføje et script når du skal bruge det.
Prøv at kigge lidt på scriptInstanceList. Det er en fatastisk brugbar feature.
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