Avatar billede maxwest Nybegynder
03. maj 2003 - 15:24 Der er 1 løsning

timing af individuelle sprites

kan det lade sig gøre at indsætte en timer delay løkke i én sprite som IKKE påvirker de andre sprites?

hidtil har jeg nemlig selv styret mine sprites behægelses hastigheder og animations hastigheder hvad en variabel som jeg tæller ned, f.eks.

on exitFrame me
iDelayUntilNextMovement=iDelayUntilNextMovement-1
if iDelayUntilNextMovement=0 then
Animate()
iDelayUntilNextMovement=10 -- animationens hastighed (jo højere tal jo langsommere animation)
end if
end exitFrame me

Det virker fjollet, men jeg kender p.t. ikke andre måder at styre mine individuelle sprites på (dvs. uden at påvirke alle sprites på een gang).

Derudover så sætter jeg min movies faste framerate fast til 50 fps, hvilket jeg formoder er den højeste framerate man bør sætte et program til, hvis det også skal køre ordentligt på langsommere computere...?

Der står desværre ingenting i nogen af mine director bøger, måske én af jer har et virkende link til en god artikkel om oop timing / tidsbaserede sprites.
Avatar billede kanding Nybegynder
03. maj 2003 - 22:42 #1
det er bedre at animere på tid, selv om det i ekstreme tilfælde også kan påvirkes af frame rate.

Director har et timeout object der kan sættes. Prøv at se dette lille script:

property pTimeObj
on mouseUp me
  pTimeObj = timeout("Timer"& string(me.spriteNum)).new(1000, #moveSprite, me)
end

on moveSprite me
  sprite(me.spriteNum).locH = sprite(me.spriteNum).locH + 10
  end


Det der sker er, at på mouseUp oprettes der en unik timer ved at parre navnet Timer og spritens nummer ("Timer"& string(me.spriteNum)). Den behøver ikke at hedde timer men hvad du har lyst til ;-). Derefter sættes intervallet i tusindedels sekunder, altså er 1000 = 1 sekund. Tilsidst fortæller vi Director hvilken handler(#moveSprite) der skal kaldes og på hvilket object(me)

Hvert sekund vil moveSprite handleren blive kaldt indtil der kaldes en pTimeObj.forget(), så vil den stoppe.

Dette script kan du sætte på alle de sprites du vil og de vil arbejde individuelt. Den hastighed de bevæger sig med, vil afhænge af tids intervallet.
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