Toon posts:

[Director] setVariable in makeScriptedSprite

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleempje. Ik probeer in director dynamisch een aantal sprites te aan te maken. Dit is me ondertussen gelukt met makeScriptedSprite. In de de scriptedSprite staat een flashbutton waar ik informatie naar toe wil sturen met setVariable. Maar als ik dit doe krijg ik de fout: "Handler not found in object". Maar als ik de het nummer in sprite(X) aanpas naar een een vast flash op die op de stage staat krijg ik geen foutmelding. Ik heb een aantal opties geprobeerd:

sprite(me.spriteNum).setVariable("btntext", qTitle)
en
channel(qChannel).sprite.setVariable("btntext", qTitle)

maar beiden geven dezelfde fout.
Is het niet mogelijk om een setVariable te doen in een scriptedSprite, of doe ik iets fout?

Verwijderd

"Handler not found in object" betekent in de praktijk meestal dat het object niet bestaat, en iets wat niet bestaat kan ook geen handler hebben. Je roept dus waarschijnlijk niet de juiste sprite aan.

Je gebruikt "me.spriteNum", maar dat kan haast niet. Dat betekent dat dat script aan de betreffende sprite zou moeten hangen, terwijl je juist zegt dat je de sprite dynamisch hebt aangemaakt??
Doe anders eens "put me.spriteNum" naar je Message Window, dan kun je zien of daar wel het juiste spritenummer uitkomt.


Ik maak zelf overigens nooit dynamisch sprites aan, maar plaats alles vantevoren in de score. Sprites die pas later zichtbaar moeten worden maak ik eerst invisible, en visible op het moment dat ik ze nodig heb. Dit is nog van de oude stempel en inmiddels misschien achterhaald, maar het werkt prima voor mij.

Verwijderd

Topicstarter
Als ik me.spriteNum doe krijg ik wel de goede waarde terug, namelijk het spritenummer van waar ik hem neer heb gezet.
Via "scriptInstanceList" heb ik een behavior gekoppeld aan de scriptedSprite. Dit werkt perfect, behalve dan dat ik niet de setVariable kan uitvoeren.

Verwijderd

Verwijderd schreef op dinsdag 09 mei 2006 @ 14:38:
Als ik me.spriteNum doe krijg ik wel de goede waarde terug, namelijk het spritenummer van waar ik hem neer heb gezet.
Dan heb je 'm dus over zichzelf heen gezet? Misschien dat daarom setVariable niet herkend wordt omdat deze sprite in eerste instantie iets anders was?

Maak die sprite eens dynamisch aan op een ander channel en hardcode dat nummer ipv "me.spriteNum". Werkt het dan beter?

Verwijderd

Topicstarter
Deze sprite/channel was eerst leeg, dus daar stond niet eerst wat anders.
Misschien begrijp je beter als ik het bestandje naar je toe stuur. Is dat mogelijk?

Verwijderd

Ja, of zet hier even (een deel van) je script neer, vele ogen zien meer dan twee.

Verwijderd

Topicstarter
Hier het Director bestandje.

Let niet op de variable namen. Dit directorbestand is puur als test voor de functionaliteit

Verwijderd

Topicstarter
Ik heb een nieuwe ontdekking gedaan die ik niet helemaal begrijp.
Als ik het bestand de eerste keer uitvoer gaat het goed. Maar als ik hem "rewind" en nog een keer probeer krijg ik pas de fout; "No Handler found in object".

Hoe kan dit?

Verwijderd

Ik heb het een tijdje zitten proberen maar ik krijg het sowieso niet aan de praat. Ook niet als ik de Flash-button vast in de score zet. Hoort die var "btntext" wel iets te doen?

Verder valt me op dat je "on enterFrame" gebruikt; je kunt beter "on beginSprite" o.i.d. doen, want alles in een "on enterFrame" wordt met "go to the frame" heel vaak herhaald! 30 keer per seconde, om precies te zijn.

Met die Flash-button kan ik je dus niet verder helpen, maar ik kan je wel het advies geven om alles binnen Director op te lossen. Een Flash-movie in een Director-movie gaan plaatsen is een beetje omslachtig, zo is het niet bedoeld. Je hebt een zeer uitgebreid en behoorlijk prijzig pakket voor je neus, het is zonde als je dan dit soort constructies gaat gebruiken. Als je Photoshop hebt ga je ook geen Paint-tekening importeren.
Zo'n button is in Director zo gemaakt, met een bitmap member en een text member. Met 'sprite(x).member.text = "tekst" ' zet je de gewenste tekst in de button.
Pagina: 1