C'est quelque chose qui me dérange depuis que j'ai commencé AS3 il y a un an.Comment référencer un objet dynamiquement instancié dans AS3? (Ajout d'un Moviclip sur la scène)
Exemple. Je fais une classe qui étend un clip vidéo et l'appeler « LoaderBar
» tout ce qu'il est est un texte qui dit « Loading » et en dessous un autre clip qui est un rectangle clair que j'appelle « lBar
»
Quand j'appelle une fonction pour charger mon image ajouter le chargeur sur la scène en tant que tel ..
function imageLoader(URL:String):void
{
var loader:Loader = new Loader(new URLRequest(URL));
loader.contentLoaderInfo.addEventListner(ProgressEvent.PROGRESS, progressHandler);
var loadBar:Loader Bar = new LoaderBar();
addChild(loadBar);
}
function progressHandler(e:Event):void
{
var pcent:Number = e.getBytesLoaded/e.getBytesTotal;
// HERE IS WHERE I'D LIKE TO MAKE DIRECT REFERENCE TO MY LOADBAR;
loadBar.lBar.width = pcent*100;
}
Essentiellement, je veux juste dire lBar
dans le clip loadbar film à la largeur du 100 pour cent *. (de sorte que lorsque le clip est chargé, la barre du chargeur a une largeur de 100 pixels).
Mon problème est le suivant. Quand j'ajoute le loadbar à la scène à l'intérieur d'une fonction, je ne peux pas faire référence à l'intérieur d'une autre fonction sans faire une bidouille faire une variable globale en dehors de ma fonction comme ...
var loadBarClip:MovieClip;
et à l'intérieur de la charge fonction attribuant la loadBar
au loadBarclip
en tant que telle
loadBarClip = loadBar.
Je me sens comme cela est redondant. Est-ce que quelqu'un sait de toute façon d'accéder à mon loadBar
sans faire une variable de référence?
love it !! RE: La note de pied, Pour une raison quelconque, j'ai adapté un goût de tout contrôler à partir de la base. Je sens que je ne suis pas en train de creuser à travers les classes pour voir ce qui se fait quoi à lui-même, plutôt que de partir de la maison et de mettre mes commandes sur tout à partir de zéro. Je ne fais pas toujours ça, et je suppose que ce n'est pas très OOP de moi, mais je commence juste. Merci encore, des conseils géniaux. –
oh mec, cela règle !! Ça a bien marché. De cette façon, je peux également me débarrasser du chargeur lorsque j'ai terminé le chargement en ajoutant un autre gestionnaire pour le Event.COMPLETE. Vous venez de changer la façon dont j'écris mes gestionnaires d'événements de chargement pour toujours. –
Je suis très heureux que vous l'aimez. Je pense que c'est assez propre, et rend les choses lisibles et organisées lorsque vous utilisez des fonctions anonymes. Pour les événements, j'utilise uniquement les fonctions nommées lorsqu'elles sont réutilisées. Notez également que pour la fermeture que j'ai mentionnée, le 'returnFromEncapsulatingClosure' devrait être nommé quelque chose qui fonctionne pour votre contexte, et vous pouvez supprimer les variables nommées et placer les instructions' new' directement dans l'objet retourné. – dlamblin