Avatar billede molluq Nybegynder
18. april 2005 - 12:54 Der er 1 kommentar og
1 løsning

Endnu et objekt problem - kald af handlers

Når jeg opretter et objekt kan jeg ikke kalde metoderne i det objekt fra andre scripts. Director brokker sig konstant og mener mine kaldemetoder er unassigned vars o.l. grrr :)

Mit parentscript opretter et goGrundPlan objekt i første frame med diverse metoder (handlers). (Objektet er ikke tildelt en sprite, men "flyver" bare rundt med sit referencenavn).
I næste frame har jeg en sprite der skal kalde en metode i goGrundPlan for at få værdien på en variabel. Jeg ville tro at måden at gøre det på er "someIntValue = goGrundPlan.getValue()" men det nægter lingo at forstå... :(
Hvad gør jeg forkert? Nogen der har et eksempel på brug af objekt-handlers i sprite behaviors eller andre scripts?
Avatar billede kanding Nybegynder
19. april 2005 - 09:08 #1
Der er forskel i kald for sprites og objekter(parent scripts)

------------- Parent script "SpriteMover"-----------------
property pSprite

-- Her opretter du objektet med et parameter som er sprite kanalen:
on new me, spr
me.pSprite = sprite(spr)
return me
end

-- Her er en handler til at flytte den sprite der er knyttet til objektet
on moveSprite me, amount
me.pSprite.locH = me.pSprite.locH + amount
end

-- her et eksempel på en handler der returnerer
on getSpriteRef me
return me.pSprite
end

----------------------------------
Du gemmer typisk dit objekt i en global variabel. Du opretter objektet udfra ovenstående parent script sådan her:

global gMitObjekt
gMitObjekt = new script("SpriteMover", 4)
-- 4 er spritekanalen

For at flytte sprite'n:
gMitObjekt.moveSprite(5)

put gMitObjekt.getSpriteRef()

---------------------- Behaviors er stort set det samme, bortset far at de placere direkte på sprite'n:

property pSprite

on beginSprite me
me.pSprite = sprite(me.spriteNum)
end

-- Her er en handler til at flytte sprite
on moveSprite me, amount
me.pSprite.locH = me.pSprite.locH + amount
end

-- her et eksempel på en handler der returnerer
on getSpriteRef me
return me.pSprite
end


Behaviors behøver ikke decideret et initialiserings kald som parent scripts, da de bliver trigge't ved første frame gennemgang(beginSprite). Her spørger den direkte, "hvilken sprite er knytte til mig?"

Du kalder på en af to måder.

sprite(4).moveSprite(5) eller
sendSprite(4, #moveSprite, 5)

Gæt hvad sendAllSprites(#moveSprite, 5) gør !! ;-)

Jeg har ikke testet det i Director, så der kan være taste fejl...

- Kanding
Avatar billede molluq Nybegynder
20. april 2005 - 15:06 #2
Hmm, ok. Jeg er vist stadig for java skadet til at Lingo bare er ligetil. Men det kommer nok lidt efter lidt. Jeg kunne hvertfald bruge svaret, så tak for det :)
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