18. april 2005 - 12:54Der 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?
-- 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...
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 :)
Synes godt om
Ny brugerNybegynder
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.