La classe Proxy ne possède pas de constructeur et il n’est pas recommandé de l’instancier. Utilisez la classe Proxy en tant que sous-classe pour bloquer des méthodes telles que
N’oubliez pas que, si votre propre code bloque les méthodes de la classe Proxy, des exceptions risquent d’être renvoyées non intentionnellement. Le renvoi d’exceptions lors de l’utilisation de ces méthodes est source de problèmes, car le code appelant (qui utilise des opérateurs tels que
La classe Proxy remplace les fonctionnalités
Pour éviter les doublons des espaces de noms
Si les méthodes de la classe Proxy nécessitent un argument
Par exemple :
Exemple (code extrait de
Exemple (code extrait de
Remarque : la classe ByteArray s’adresse aux développeurs chevronnés qui doivent accéder aux données au niveau des octets.
Les données en mémoire correspondent à un tableau contracté (la représentation la plus compacte du type de données) d’octets, mais une occurrence de la classe ByteArray peut être manipulée avec les opérateurs
En outre, la technologie zlib de compression/décompression est prise en charge, de même que la sérialisation d’objet AMF (Action Message Format).
Exemples d’utilisation de la classe ByteArray :
Remarque : lorsque la méthode
Vous remarquerez qu’un segment de code est ajouté à la fin pour vérifier les erreurs de fin de fichier et s’assurer que la lecture du flux d’octets ne dépasse pas la fin.
Après l’appel, la propriété
Le format de données compressé zlib est décrit à l’adresse
L’algorithme de compression deflate est décrit à l’adresse
L’algorithme de compression deflate est utilisé dans plusieurs formats de compression, notamment zlib, gzip, certaines implémentations zip, etc. Lorsque vous compressez les données avec l’un de ces formats de compression, les données compressées (par exemple, le fichier .zip) incluent non seulement la version compressée des données originales, mais également les informations de métadonnées. Exemples de types de métadonnées inclus dans divers formats de fichier : nom de fichier, date/heure de modification du fichier, taille du fichier original, commentaires, données du total de contrôle, etc.
Par exemple, lorsqu’un objet ByteArray est compressé à l’aide de l’algorithme zlib, l’objet ByteArray résultant est structuré dans un format spécifique. Certains octets contiennent des métadonnées sur les données compressées, alors que d’autres contiennent la version compressée actuelle des données originales de l’objet ByteArray. Comme l’indique la spécification du format de données compressées zlib, ces octets (c’est-à-dire la partie contenant la version compressée des données originales) sont compressées à l’aide de l’algorithme deflate. Par conséquent, ces octets sont identiques au résultat de l’appel de
Si vous souhaitez utiliser le format deflate pour compresser les données d’une occurrence de ByteArray dans un format spécifique, tel que gzip ou zip, l’appel de la méthode
Après l’appel, la propriété
L’algorithme de compression deflate est décrit à l’adresse
Si vous souhaitez utiliser le format deflate pour compresser les données d’une occurrence de ByteArray dans un format spécifique, tel que gzip ou zip, l’appel de la méthode
Après l’appel, la propriété
L’algorithme de compression deflate est décrit à l’adresse
Pour décoder les données compressées dans un format qui utilise l’algorithme de compression deflate (données au format gzip ou zip, par exemple), l’appel de la méthode
La valeur renvoyée est comprise entre -128 et 127.
La valeur renvoyée est comprise entre -2147483648 et 2147483647.
Remarque : si la valeur du paramètre
La valeur renvoyée est comprise entre -32768 et 32767.
La valeur renvoyée est comprise entre 0 et 255.
La valeur renvoyée est comprise entre 0 et 4294967295.
La valeur renvoyée est comprise entre 0 et 65535.
Après l’appel, la propriété
Le format de données compressé zlib est décrit à l’adresse
L’algorithme de compression deflate est décrit à l’adresse
Pour décoder les données compressées dans un format qui utilise l’algorithme de compression deflate (données au format gzip ou zip, par exemple), l’appel de la méthode
Les 8 bits inférieurs du paramètre sont utilisés. Les 24 bits supérieurs ne sont pas pris en compte.
Si le paramètre
Si les paramètres
Utilisez la propriété
Lorsqu’un objet est écrit ou lu dans des données binaires, la valeur
Si la longueur est définie sur une valeur supérieure à la longueur en cours, le côté droit du tableau d’octets est rempli de zéros.
Si la longueur est définie sur une valeur inférieure à la longueur en cours, le tableau d’octets est tronqué.
Toutes les opérations IDataInput et IDataOutput utilisent l’ordre d’octet « bigEndian » par défaut (où l’octet le plus significatif de la séquence est mémorisé dans l’adresse de stockage de plus bas niveau ou dans la première adresse de stockage) et ne sont pas bloquantes.
L’extension de signe ne joue un rôle que lors de la lecture des données et non lors de leur écriture. Il est donc inutile d’utiliser des méthodes d’écriture distinctes pour faire appel à
Vous remarquerez qu’un segment de code est ajouté à la fin pour vérifier les erreurs de fin de fichier et s’assurer que la lecture du flux d’octets ne dépasse pas la fin.
Si le paramètre
Si les paramètres
Le contenu
Le nombre hexadécimal 0x12345678 contient 4 octets (2 chiffres hexadécimaux par octet). L’octet le plus significatif correspond à 0x12. L’octet le moins significatif correspond à 0x78. (Pour le nombre décimal équivalent, 305419896, le chiffre le plus significatif est 3, tandis que le moins significatif est 6).
Un flux qui utilise l’ordre bigEndian (octet le plus significatif en première position) écrit :
12 34 56 78
Le nombre hexadécimal 0x12345678 contient 4 octets (2 chiffres hexadécimaux par octet). L’octet le plus significatif correspond à 0x12. L’octet le moins significatif correspond à 0x78. (Pour le nombre décimal équivalent, 305419896, le chiffre le plus significatif est 3, tandis que le moins significatif est 6).
Un flux qui utilise l’ordre littleEndian (octet le moins significatif en première position) écrit :
78 56 34 12
Si une classe n’implémente pas l’interface IExternalizable et qu’elle n’hérite pas d’une classe qui implémente elle-même l’interface, une occurrence de la classe est sérialisée par le biais du mécanisme par défaut réservé aux membres publics. De ce fait, les membres privés, internes et protégés d’une classe ne seront pas disponibles.
Pour sérialiser les membres privés, une classe doit utiliser l’interface IExternalizable. Par exemple, la classe suivante ne sérialisera aucun de ses membres, parce qu’ils sont privés :
Cependant, si vous implémentez l’interface IExternalizable, vous pouvez lire et écrire dans le flux de données les membres privés de la classe, comme suit :
Remarque : si une classe implémente Externalizable, la sérialisation par défaut ne s’applique plus à ses occurrences. Si cette classe hérite des membres publics d’une super-classe, vous devez également les gérer avec soin.
Lorsqu’une sous-classe de la classe qui implémente IExternalizable possède des membres privés qui lui sont propres, elle doit remplacer les méthodes de IExternalizable, comme suit :
L’interface IExternalizable permet également de compresser les données avant de les écrire dans un flux de données. Par exemple :
Remarque :
Si le paramètre
Pour obtenir les propriétés statiques d’un type, transmettez le type en tant que tel pour le paramètre
Remarque : s’il vous suffit de parcourir la hiérarchie d’héritage d’un objet sans avoir besoin d’accéder aux autres informations fournies par
Le tableau ci-dessous décrit certains attributs et certaines balises de l’objet XML généré par
Après avoir récupéré le nom d’une classe avec cette fonction, vous pouvez le convertir en référence de classe à l’aide de la fonction
Remarque : cette fonction se limite elle-même aux hiérarchies d’occurrences, alors que la fonction
Pour obtenir une date de calendrier (horodatage), voir l’objet Date.
Chaque appel de la méthode
Une boucle est créée pour compter jusqu’à un million. Si le système peut traiter cette requête en moins d’une seconde,
Au lieu d’utiliser la méthode
Si vous souhaitez utiliser la méthode
Au lieu d’utiliser cette méthode, envisagez de créer un objet Timer associé à l’intervalle spécifié, en utilisant 1 en tant que paramètre
Si vous souhaitez utiliser la méthode
Vous pouvez créer des objets Timer pour les exécuter une seule fois ou à intervalles spécifiés, afin d’exécuter du code conformément au planning défini.
L’horloge ne démarre pas automatiquement. Pour ce faire, vous devez appeler la méthode
Un objet Timer est créé, démarre dans 30 secondes (délai défini sur 30000 millisecondes) et se répète trois fois pour un total de 90 secondes (l’objet Timer s’interrompt après la troisième fois).
Deux écouteurs d’événement sont ajoutés au minuteur
Remarque : la classe Timer garde la trace du nombre de démarrage qu’elle effectue (
Après que l’horloge est appelée pour la dernière fois, l’événement
Remarque : un
Toutes les opérations IDataInput et IDataOutput utilisent l’ordre d’octet « bigEndian » par défaut (où l’octet le plus significatif de la séquence est mémorisé dans l’adresse de stockage de plus bas niveau ou dans la première adresse de stockage) et ne sont pas bloquantes. Si les données disponibles sont insuffisantes, une exception
L’extension de signe ne joue un rôle que lors de la lecture des données et non lors de leur écriture. Il est donc inutile d’utiliser des méthodes d’écriture distinctes pour faire appel à
Vous remarquerez qu’un segment de code est ajouté à la fin pour vérifier les erreurs de fin de fichier et s’assurer que la lecture du flux d’octets ne dépasse pas la fin.
Remarque : si la valeur du paramètre
Cette méthode est similaire à la méthode
Les instructions suivantes indiquent les relations qui existent entre un objet Dictionary et un objet clé :
var dict = new Dictionary(); var obj = new Object(); var key:Object = new Object(); key.toString = function() { return "key" } dict[key] = "Letters"; obj["key"] = "Letters"; dict[key] == "Letters"; // true obj["key"] == "Letters"; // true obj[key] == "Letters"; // true because key == "key" is true b/c key.toString == "key" dict["key"] == "Letters"; // false because "key" === key is false delete dict[key]; //removes the key