Behöver hjälp med ett skript i Director!!

Permalänk
Medlem

Behöver hjälp med ett skript i Director!!

Hej nu är det så att jag behöver hjälp med ett skript i Director (Lingo)

Problemet är att jag vill få en boll styrd med Piltangeterna.
Jag lyckas när det bara är en Frame som den ska loopa mellan. men sen när det kommer fler frames så dyker jag på problemet.
mitt skript är:

on exitFrame me

if keypressed (124) then
set the locH of sprite(me.spritenum) to the locH of sprite (me.spritenum) +10
end if
if keypressed (123) then
set the locH of sprite(me.spritenum) to the locH of sprite (me.spritenum) -10
end if
if keypressed (126) then
set the locV of sprite(me.spritenum) to the locV of sprite (me.spritenum) -10
end if
if keypressed (125) then
set the locV of sprite(me.spritenum) to the locV of sprite (me.spritenum) +10
end if
end

___________________________________________________________

Tacksam för snabba svar!!! jag kanske inte förklarade så bra med skriv isf.

//Acido

Visa signatur

Man Va Ju Nykter Imorse, Men Nu Börjar Det Ordna Upp Sig vettu! =P

Permalänk
Medlem

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.

Visa signatur

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com

Permalänk
Medlem

tack för svaret.
om jag fattat rätt så funkar detta enbart i Macromedia MX 2004 ?
i skolan får vi bara tillgång till Director 8.5 och inget annat får användas :/ konstigt nog. men du tror inte du kan göra likadant skript till 8.5 ??
tack för hjälpen // Acido

EDIT: stavfel!! ;D

Visa signatur

Man Va Ju Nykter Imorse, Men Nu Börjar Det Ordna Upp Sig vettu! =P

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Acido0
tack för svaret.
om jag fattat rätt så funkar detta enbart i Macromedia MX 2004 ?
i skolan får vi bara tillgång till Director 8.5 och inget annat får användas :/ konstigt nog. men du tror inte du kan göra likadant skript till 8.5 ??
tack för hjälpen // Acido

EDIT: stavfel!! ;D

Ah ok! När de gick över till MX 2004 så har de gjort en hel del lingo annorlunda för att komma närmare java som är integrerat nu för tiden.
Prova med att ändra alla _key.keyPressed() till keyPressed() (som du skrivit tidigare), ändra _movie.go(_movie.frame) till go the frame, resten bör fungera. Skulle det bli något problem med mitt andra förslag (mjukare bollrörelsen) så prova att sätta alla handlers (dvs. deltaLoc, newLoc och savesSpeedValue) som properties, alltså:

property spriteNum, deltaLoc, newLoc, savesSpeedValue
on exitFrame me... osv.

Jag vet inte hur nära du kommit lingo men skillnaden mellan properties och globals är att properties gäller bara i scriptinstansen, globals gäller över hela produktionen och kan t.om. föras över om du väljer att hoppa från en produktion till en annan. Kruxet är dock att Director läser properties mycket snabbare än globals, så om man har många olika handlers som bara ska gälla på en sprite t.ex. så är det bättre att köra med properties.

Lycka till!

Visa signatur

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com

Permalänk
Medlem

EDIT: jag fick det att funka ... tack så mycket

Visa signatur

Man Va Ju Nykter Imorse, Men Nu Börjar Det Ordna Upp Sig vettu! =P