Introductie
Al enige tijd loop ik met het idee voor een flash-based MMO - niks serieus, maar een leuk hobby project. Essentieel onderdeel daarvan is dat er objecten extern ingeladen moeten worden: andere spelers, gebouwen, you name it. Met AS3 is dat in principe vrij simpel geworden (een Loader gebruiken, eventlistener aan hangen et voila) echter loop ik daarna tegen problemen aan bij het manipuleren van de ingeladen MovieClips. Aangezien mijn Flash kennis gelimiteerd is tot wat ik kan vinden in de manual hoop ik dat hier meer ervargen mensen rondlopen die dit wel weten
Default instance naam aanpasbaar?
Wanneer een swf file ingeladen is kan ik middels even.target.content de bovenste MovieClip bereiken - so far so good. Echter, als ik deze aan de hoofd MovieClip (of wherever) wil hangen middels een .addChild heeft deze altijd een default naam - 'instance2' etc. Dit is vervelend aangezien ik later weer hetzelfde object wil kunnen aanspreken en de ideale methode daarvoor voor zover ik kan zien getChildByName is. Als tussenoplossing heb ik nu een extra property toegevoegd die overeenkomt met het ID wat de server heeft, maar dit is verre van ideaal aangezien ik nu over alle children moet loopen. De naam direct wijzigen lijkt niet te gaan: zodra de Loader complete eventHandler aangeroepen wordt krijg ik al een error wanneer ik object.name wil veranderen:
Ter volledigheid: dit is dus al voordat ik hem middels addChild ergens aanhang. Iemand enig idee hoe ik toch deze naam kan aanpassen?
MovieClips clonen?
Aangezien er veel dezelfde objecten ingeladen zullen worden wil ik deze natuurlijk het liefst cachen. Echter, dat vereist weer dat ik een kopie van het MovieClip object kan maken, en voor zover ik kan vinden is daar geen methode voor in AS3?
Ik heb wel enkele functies gevonden die zichzelf recursief aanroepen op een object om een deep copy te maken, maar aangezien ik dat nogal ranzig vind en mogelijk foutgevoelig vroeg ik me af of Flash daar niet zelf ook een manier voor heeft? Ter verduidelijking, deze objecten moeten wel apart manipuleerbaar zijn dus simpelweg meerdere keren .addChild gebruiken is geen optie.
Alvast zeer bedankt!
Al enige tijd loop ik met het idee voor een flash-based MMO - niks serieus, maar een leuk hobby project. Essentieel onderdeel daarvan is dat er objecten extern ingeladen moeten worden: andere spelers, gebouwen, you name it. Met AS3 is dat in principe vrij simpel geworden (een Loader gebruiken, eventlistener aan hangen et voila) echter loop ik daarna tegen problemen aan bij het manipuleren van de ingeladen MovieClips. Aangezien mijn Flash kennis gelimiteerd is tot wat ik kan vinden in de manual hoop ik dat hier meer ervargen mensen rondlopen die dit wel weten
Default instance naam aanpasbaar?
Wanneer een swf file ingeladen is kan ik middels even.target.content de bovenste MovieClip bereiken - so far so good. Echter, als ik deze aan de hoofd MovieClip (of wherever) wil hangen middels een .addChild heeft deze altijd een default naam - 'instance2' etc. Dit is vervelend aangezien ik later weer hetzelfde object wil kunnen aanspreken en de ideale methode daarvoor voor zover ik kan zien getChildByName is. Als tussenoplossing heb ik nu een extra property toegevoegd die overeenkomt met het ID wat de server heeft, maar dit is verre van ideaal aangezien ik nu over alle children moet loopen. De naam direct wijzigen lijkt niet te gaan: zodra de Loader complete eventHandler aangeroepen wordt krijg ik al een error wanneer ik object.name wil veranderen:
code:
1
| Error: Error #2078: The name property of a Timeline-placed object cannot be modified. |
Ter volledigheid: dit is dus al voordat ik hem middels addChild ergens aanhang. Iemand enig idee hoe ik toch deze naam kan aanpassen?
MovieClips clonen?
Aangezien er veel dezelfde objecten ingeladen zullen worden wil ik deze natuurlijk het liefst cachen. Echter, dat vereist weer dat ik een kopie van het MovieClip object kan maken, en voor zover ik kan vinden is daar geen methode voor in AS3?
Alvast zeer bedankt!