Question

script Flash Action 3, lorsque vous devez charger du texte, vous utilisez une classe appelée URLLoader, et quand vous avez besoin de charger une image (ou .swf) que vous utilisez une classe appelée « chargeur ». Pour autant que je sache, le chargement d'un .bmp avec URLLoader est aussi inutile que le chargement d'un .xml dans un chargeur -. Il ne calcule pas

Je fais une classe qui gère une file d'attente d'actifs externes à charger - mais en dehors de diviser l'URL cible pour vérifier l'extension du fichier, je ne peux pas trouver un bon moyen de savoir si chaque URL nécessite une URLLoader ou un chargeur. En tout cas, il est imaginable qu'une URL .php peut renvoyer soit une image ou un document - donc il n'y a aucun moyen de compter sur les noms de fichiers à dicter le type de classe de chargement à utiliser

.

Toutes les idées sur la façon de détecter de manière fiable la classe pour le travail sur une base URL par URL?

Était-ce utile?

La solution

bien, la question la plus délicate, consiste à déterminer le type de la cible ...

  1. regardant l'URL est assez simple, mais peut ne pas toujours ... certaines personnes diffusent des images de phps et ainsi de suite ...
  2. vous pouvez le faire comme navigateur ... commencer le chargement, puis regarder ce qu'il est ... maintenant encore, il y a de multiples possibilités ...
    1. charger les données sous forme de données binaires ... lorsque vous avez terminé, regardez la séquence de démarrage ... est-ce PNG (89 50 4E 47 0D 0A 1A 0A)? GIF (47 49 46 38 39 61)? JPEG (FF E0)? SWF ("FWS" (drôle, non?))? toute autre chose devrait être texte ou base ... dans le cas d'une image, le charger dans un Loader avec Loader::loadBytes ... soyez prudent avec SWF mais ... vous ne devez charger graphicals comme ça ... Les fonds souverains dans tout autre cas, le convertir en une chaîne en utilisant le bon encodage (idéalement des données de texte est servi en UTF8) ... alors peut-être que vous pouvez deviner déjà, si elle peut être XML, JSON ou variables de code URL ... essayez l'analyse syntaxique (en utilisant des classes XML, com.adobe.serialization.JSON, flash.net.URLVariables) ... si tout échoue, il est probablement juste texte (vous pouvez essayer de vérifier que superficiellement ... si vous voulez une entrée à ce sujet, laissez-moi un commentaire) ...
    2. faire la HTTP vous ... ouvrir une socket et charger la source ... vous obtiendrez mime-types en plus ... rien que vous pouvez compter sur, mais ça aide ... il y a un la mise en œuvre de HTTP à AS3 ... une fois que vous avez les données
  3. passer le type manuellement ... pure et simple ... et vous ne comptez pas sur quelqu'un d'autre ...

il y a aussi une différence importante entre Loader et URLLoader ... chargeur peut charger les domaines, sandboxing simplement son contenu de données afin que vous ne pouvez pas regarder dedans ... URLLoader ne peut charger de votre domaine et les domaines qui permettent ce explicitement en utilisant des fichiers de stratégie de domaine croix ...

aussi, le chargement, qui sont les fonds souverains non seulement des éléments graphiques externes, mais vous voulez vraiment l'interface avec, vous ne devriez pas l'utiliser, car vous avez besoin de contrôle sur la LoaderContext etc ...

Alors, oui ... quelque façon que vous choisissez, bonne chance ...;)

greetz

back2dos

Autres conseils

Bulkloader fait quelques devinettes basé sur l'URL, peut-être prendre un coup d'oeil dans la source et voir comment ils le font?

Personnellement, je préciser exactement comment vous souhaitez vous charger un objet si elle est une image ou xml. Depuis que je l'ai écrit quelques chargeurs de file d'attente, je suggère que vous ne suivre juste une chaîne d'URL, mais un ensemble d'objets avec des choses comme, l'URL à charger, si elle a chargé, la priorité de charge, et le type. Voici le code psudo.

class QueueObject{
  var URLtoLoad:String;
  private var hasLoaded:Boolean = false;
  var isDataObject:Boolean = false;
  var queuePriority:Number = 3; // 
}

Dans votre code lorsque vous voulez ajouter quelque chose dans votre file d'attente.

il suffit d'aller

var loadObject:QueueObject = new QueueObject();
loadObject.URLtoLoad = "http://theurl.com/somedata.xml";
loadObject. isDataObject= true;

// pousser Maintenant ceci dans la classe super chargeur que vous avez écrit qui va gérer la file d'attente. J'envoyer l'objet à charger, la référence à la portée actuelle par exemple, cela, et le nom de la fonction que vous voulez appeler quand cet objet est chargé.

MyStaticLodingClass.addQueueObject(loadObject, this, myFunctionThatYouWillCallWhenDone); 

Cette classe doit avoir maintenant au-dessus d'un tableau que vous pouvez trier par ordre de priorité pour vous donner des éléments à charge, ce que leurs types sont et de leur URL. De cette façon, vous pouvez

Cela peut aider ou non.

Autre rendre sage quelque chose à comprendre quel type d'objet que vous essayez de charger, par exemple BMP et utiliser le chargeur correct basé sur une recherche pour cet objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top