Du har lärt dig på det gamla goda sättet ser jag, testa att göra såhär istället så blir det lättare att läsa:
Lägg detta på din sprite som ska få egenskapen
property spriteNum
on exitFrame me
if _key.keyPressed(124) then
sprite(spriteNum).locH = sprite(spriteNum).locH + 10
end if
if _key.keyPressed(123) then
sprite(spriteNum).locH = sprite(spriteNum).locH - 10
end if
if _key.keyPressed(126) then
sprite(spriteNum).locV = sprite(spriteNum).locV - 10
end if
if _key.keyPressed(125) then
sprite(spriteNum).locV = sprite(spriteNum).locV + 10
end if
end
Lägg detta som ett framescript (alltså i score)
on exitFrame me
_movie.go(_movie.frame)
end
------------------
Om du vill "hotta" till det lite med mjukare rörelser så kan du göra såhär:
Gör en moviescript som ser ut såhär
global savesLocation
on startMovie me
savesLocation = [0, 0]
end
Lägg sedan detta script på din sprite
global savesLocation
property spriteNum
on exitFrame me
if _key.keyPressed(124) then
savesLocation[1] = savesLocation[1] + 10
end if
if _key.keyPressed(123) then
savesLocation[1] = savesLocation[1] - 10
end if
if _key.keyPressed(126) then
savesLocation[2] = savesLocation[2] - 10
end if
if _key.keyPressed(125) then
savesLocation[2] = savesLocation[2] + 10
end if
savesSpeedValue = 10
deltaLoc = (savesLocation - sprite(spriteNum).loc)/savesSpeedValue
newLoc = sprite(spriteNum).loc + deltaLoc
sprite(spriteNum).loc = newLoc
end
Och slutligen detta i score som framescript
on exitFrame me
_movie.go(_movie.frame)
end
Det vi har gjort nu i det sista exemplet är att skapa en egen handler som fungerar som en sprite (bara att den inte syns) och det är den du styr, för att sedan göra lite matematik och få din synliga sprite att följa efter. Handlern sätts till en lista och får två värden (0, 0) - (precis som .loc funktionen återger sitt värde) när du startar (i och med startMovie), detta är endast för att handlern ska få ett värde så man har något att jobba med. Handlerns värde är spritens värde i pixlar (dvs om du sätter savesLocation till värdena [80, 20] så betyder det att den befinner sig 80 pixlar i bredd och 20 pixlar i höjd). Med savesSpeedValue sätter du hastigheten för hur snabbt din sprite ska röra sig till din handlers värde, ju lägre tal desto snabbare går det.
Det blir enklare för dig i framtiden om du börjar med dotSyntax istället för att bygga koden på meningar, då kan du göra mer avancerade saker.
Jag la upp mitt andra exempel, det är bara tanka hem och kika (kräver Director MX 2004, högerklicka -> spara som, annars öppnas ett webbfönster och körs som att det vore en shockwave): http://www.mediamonster.se/misc/sweclockers/mjukboll.dir
Lycka till!
edit: Varför det är så bra att lägga script på specifika sprites är att du alltid har med dig den scripten som tillhör den spriten, så slipper du hålla koll på alla olika instanser av script och vart dem går. Försök sedan att hålla dig borta från platsen där du lägger in "go the frame"-scripten så att den är ren från onödiga loopar som bara tar CPU.