Package | flash.desktop |
Interface | public interface IFilePromise |
Implémenteurs | MediaPromise, URLFilePromise |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Un fichier promis est un format de glisser-déposer du Presse-papiers qui permet à l’utilisateur de faire glisser un fichier qui n’existe pas encore hors d’une application AIR. AIR utilise les méthodes et propriétés définies par l’interface IFilePromise pour accéder aux données à écrire lors du dépôt du fichier promis.
Lorsqu’un fichier promis est déposé sur une cible appropriée, AIR appelle la méthode open()
de l’interface IFilePromise. L’implémentation de cette méthode doit renvoyer le fournisseur de données sous forme d’objet implémentant l’interface IDataInput. L’objet fournisseur peut être l’une des classes intégrées, telles que ByteArray, FileStream, Socket et URLStream, ou une classe personnalisée.
Si l’accès aux données du fournisseur de données se fait en mode synchrone, notamment par le biais d’une classe ByteArray, AIR lit la quantité de données indiquée par la propriété bytesAvailable
de IDataInput, puis l’écrit dans le fichier cible.
Si l’accès aux données du fournisseur de données se fait en mode asynchrone, notamment par le biais d’une classe Socket, AIR utilise les événements distribués par le fournisseur afin d’uniformiser la lecture des données et leur écriture dans le fichier. Les données sont lues à chaque événement progress jusqu’à ce qu’un événement complete ou close soit reçu. Le moteur d’exécution écoute les événements suivants (mais un fournisseur de données n’a pas besoin de distribuer chaque événement) :
- Event.OPEN
- ProgressEvent.PROGRESS
- ProgressEvent.SOCKET_DATA
- Event.COMPLETE
- Event.CLOSE
- IOErrorEvent.IOERROR
- SecurityErrorEvent.SECURITY_ERROR
- HTTPStatusEvent.HTTP_STATUS
- HTTPStatusEvent.HTTP_RESPONSE_STATUS
Les classes du fournisseur de données personnalisées doivent distribuer un événement progress
ou un événement socketData
lorsque les données sont disponibles. De même, un événement complete
ou un événement close
doit être distribué lorsque toutes les données sollicitées ont été lues. Les événements d’erreur informent le moteur d’exécution que le transfert de données a échoué et doit être annulé. Les autres événements doivent être distribués pour faciliter le traitement des erreurs et le débogage de la logique de l’application.
Les méthodes définies par IFilePromise doivent être appelées par le moteur d’exécution d’AIR uniquement suite à une opération de glisser-déposer. En règle générale, les développeurs ne doivent pas appeler ces méthodes à partir de leur propre code.
Remarque : la classe URLFilePromise, disponible dans la bibliothèque air.desktop, implémente l’interface IFilePromise et utilise l’objet URLStream comme un fournisseur de données. La bibliothèque air.desktop est incluse en tant que fichiers SWF et SWC distincts dans le kit de développement d’AIR.
Plus d’exemples
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
isAsync : Boolean [lecture seule]
Indique si le transfert de données asynchrone est pris en charge. | IFilePromise | ||
relativePath : String [lecture seule]
Chemin relatif et nom du fichier qui seront créés par ce fichier promis. | IFilePromise |
Méthode | Défini par | ||
---|---|---|---|
Appelée par le moteur d’exécution d’AIR lorsque la lecture de toutes les données est terminée. | IFilePromise | ||
Renvoie l’objet fournisseur de données. | IFilePromise | ||
Appelée par le moteur d’exécution d’AIR pour informer l’implémentation de IFilePromise des erreurs qui se produisent lors de la lecture des données depuis l’objet fournisseur de données. | IFilePromise |
isAsync | propriété |
isAsync:Boolean
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Indique si le transfert de données asynchrone est pris en charge.
Si elle est définie sur true
, l’objet fournisseur de données renvoyé par la méthode open()
doit implémenter l’interface IEventDispatcher (ou étendre une classe qui implémente cette interface). Le transfert de données est effectué par le biais de l’événement progress
ou socketData
. AIR attend ces événements de progression de données jusqu’à ce qu’un événement complete
ou close
soit distribué.
Si isAsync
renvoie false, le moteur d’exécution d’AIR suppose que toutes les données sont disponibles tout de suite. Dans ce cas, le moteur d’exécution lit la propriété bytesAvailable
de l’objet fournisseur de données pour déterminer la quantité des données disponibles, puis lit de manière synchrone cette quantité de données.
Implémentation
public function get isAsync():Boolean
relativePath | propriété |
relativePath:String
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Chemin relatif et nom du fichier qui seront créés par ce fichier promis.
Cette propriété doit fournir un chemin valide ou une erreur d’argument est renvoyée lorsque le fichier promis est déposé.
Le chemin peut inclure des sous-répertoires, qui sont résolus en fonction de l’emplacement du dépôt. Des sous-répertoires sont créés, le cas échéant. Lorsque vous incluez des sous-répertoires, utilisez la constante File.separator
pour insérer le caractère de séparation du chemin correspondant au système d’exploitation actuel. L’utilisation du raccourci .. pour rechercher un répertoire parent n’est pas autorisée. Si vous tentez d’utiliser ce raccourci, une erreur d’argument est renvoyée. Les caractères non valides du système de fichiers sont ôtés du chemin sans renvoyer d’erreur.
Remarque : pour permettre au code client de définir le chemin, vous pouvez implémenter une fonction setter avec la signature : function set relativePath( valeur:String ):void
.
Implémentation
public function get relativePath():String
Valeur émise
ArgumentError — si le chemin relatif utilise les raccourcis .. pour parcourir un ou plusieurs répertoires parents de la cible de dépôt.
|
close | () | méthode |
public function close():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Appelée par le moteur d’exécution d’AIR lorsque la lecture de toutes les données est terminée.
Aucune méthode n’est appelée sur la référence de l’objet renvoyé par open()
après l’appel de close()
. L’objet fournisseur de données peut être détruit en toute sécurité.
open | () | méthode |
public function open():IDataInput
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Renvoie l’objet fournisseur de données.
L’objet fournisseur de données doit implémenter l’interface IDataInput, qui définit des méthodes pour la lecture des données. Si la propriété isAsync
de l’interface IFilePromise renvoie true
, l’objet fournisseur de données doit également implémenter l’interface IEventDispatcher. Les classes intégrées suivantes peuvent être utilisées comme fournisseur de données :
- ByteArray (synchrone)
- FileStream (synchrone ou asynchrone)
- Socket (asynchrone)
- URLStream (asynchrone)
Vous pouvez également fournir l’objet d’une classe personnalisée qui implémente les interfaces requises (ou étend une autre classe qui les implémente).
Valeur renvoyéeIDataInput — IDataInput Objet qui implémente l’interface IDataInput. Si les données sont fournies de manière asynchrone, l’objet renvoyé doit également implémenter l’interface IEventDispatcher.
|
reportError | () | méthode |
public function reportError(e:ErrorEvent):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Appelée par le moteur d’exécution d’AIR pour informer l’implémentation de IFilePromise des erreurs qui se produisent lors de la lecture des données depuis l’objet fournisseur de données.
Paramètres
e:ErrorEvent — L’événement d’erreur contenant des informations détaillées sur l’erreur.
|
Tue Jun 12 2018, 09:30 AM Z