2009-05-24 10 views
1

Est-ce que quelqu'un sait comment AS3/Flash runtime gère la tentative de modification du prototype lorsque vous travaillez entre des sandbox. En particulier, je crée l'objet O dans le bac à sable A, puis je le passe à SandBox B. Quel est l'effet si le code dans le bac à sable B essaie de modifier le prototype? (est-ce que les objets dans A de la même classe voient ceci?). Est-ce que Sandbox B peut remplacer les champs publics et les méthodes de l'objet créé dans sandbox A (si l'objet est transmis en tant que param)? Est-il possible de créer une classe non modifiable (c'est-à-dire l'équivalent de dire final en Java) qui peut agir comme un proxy prêt à passer entre les swf chargés et le swf principal? Je sais que la classe d'événements peut utiliser clone() pour faire cela, puis passer les événements entre les deux swf. L'utilisation d'une classe finale dans AS3 est-elle la bonne façon de créer des proxys en lecture seule qui ne peuvent pas être modifiés du tout?Action Script Prototypes et création de fonction dynamique

Répondre

3

vous pouvez toujours utiliser la classe flash.utils.Proxy, si vous voulez un proxy que lire un objet ...

ActionScript3 est prototype ne se base pas comme 1 et 2 ont été (vous devez compiler pour mode objet ECMA, qui vient à la diminution énorme de vitesse) ...

il a maintenant 2 mécanismes d'héritage ... on est classe basée, et l'autre est basé prototype et ne fonctionne que pour dynamiques propriétés de dynamique classes ... non scellé (c.-à-d. non dynamique) classe et aucun scellé propriété ou méthode scellé d'une classe dynamique peuvent être modifiés lors de l'exécution ... en modifiant une propriété, je veux dire la modification de son type, ou en ajoutant un setter lors de l'exécution, ou le remplacer. .. si la propriété est inscriptible, vous pouvez bien sûr d'attribuer quelque chose à elle ...

finale signifie seulement, il ne peut pas être sous-classé ...

pour autant que je sache, dès que vous passer un objet O de bac à sable A à B, le code dans B peut accéder à O de la même manière que le code dans A ...

Je ne sais pas, si cela répond à la question que vous ... peut-être pourriez-vous expliquer ce que vous êtes exactement à ... :)

greetz

back2dos

+0

merci pour la retour d'information. AS3 dispose de 4 modificateurs de visibilité de classe: dynamique, final, interne (par défaut) et public. Le doc as3 dit que si vous spécifiez dynamique, alors seulement une fonction peut ajouter de nouvelles propriétés et fonctions. Ai-je raison de supposer que c'est la même chose que (new Object()). Myprop = xyz? – nso1

+1

votre hypothèse est correcte ... pour vous corriger, cependant, il y a 3 modificateurs de visibilité: public, interne et privé (ie seulement visible à la déclaration principale dans ce fichier) ... dynamique spécifie, si des propriétés peuvent être ajoutées à l'exécution, et final, que vous ne pouvez pas sous-classer la classe ... juste pour illustrer mon point: vous pouvez déclarer une classe publique finale dynamique Foo ... mais vous ne pouvez pas déclarer une classe interne publique Foo ... pour plus d'explications, vous devriez faire une nouvelle question, puisque 600 caractères sont assez restrictifs :) greetz – back2dos

Questions connexes