begin process at 2010 03 21 05:16:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > DETECTEUR AUTOMATIQUE DE MEDIA AS3 - AS2

DETECTEUR AUTOMATIQUE DE MEDIA AS3 - AS2


 Information sur la source

Note :
Aucune note
Catégorie :ActionScripts Classé sous :string, detecter, media, switch, split Niveau :Initié Date de création :04/09/2008 Date de mise à jour :05/09/2008 11:37:44 Vu :3 280

Auteur : ourso

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

je viens de la finir ! je m'en sers pour trier mes médias qui viennent d'un xml unique... ça peut servir dans d'autres cas aussi en live pour charger la bonne appli en fonction du media !
en gros
vous fournissez le nom de fichier à la fonction.
la fonction coupe la chaine au niveau de l'extension, la transforme en bas de casse pour reduire les possibilités d'ecriture, puis l'analyse dans un switch et renvoie la valeur de la variable media_type.
On peut la mettre indiferemment dans un script AS3 ou AS2 (je la sors d'une classe et je l'ai essayé en la collant sur une image d'un doc flash 8: opérationnel !)

Source

  • function media_setter(nom_media:String):String
  • {
  • var splitted:Array = nom_media.split(".");
  • var ind:Number = nom_media.lastIndexOf(".");
  • var extension:String = nom_media.substr(ind + 1).toLowerCase();
  • var media_type:String;
  • switch (extension) {
  • case "jpg":
  • media_type = "image";
  • break;
  • case "jpeg" :
  • media_type = "image";
  • break;
  • case "png":
  • media_type = "image";
  • break;
  • case "flv" :
  • media_type = "video";
  • break;
  • case "mp3" :
  • media_type = "musique";
  • break;
  • case "pdf" :
  • media_type = "download_file";
  • break;
  • default :
  • media_type = null;
  • break;
  • }
  • return(media_type);
  • }
                        function media_setter(nom_media:String):String
			{
				var splitted:Array = nom_media.split(".");
                                var ind:Number = nom_media.lastIndexOf(".");
                                var extension:String = nom_media.substr(ind + 1).toLowerCase();
				var media_type:String;
				switch (extension) { 
				case "jpg": 
				media_type = "image";
				break; 
				case "jpeg" : 
				media_type = "image";
				break; 
				case "png": 
				media_type = "image";
				break; 
				case "flv" :
				media_type = "video";
				break; 
				case "mp3" : 
				media_type = "musique";
				break; 
				case "pdf" : 
				media_type = "download_file";
				break;
				default : 
				media_type = null;
				break;
			}
			
				return(media_type);
			}

 Conclusion

J'ai pas encore verifié tout les format de medias supportés par flash... à inclure en plus s'il y en a je completerai plus tard ... encore du taf !


 Historique

04 septembre 2008 23:29:06 :
l'envoi s'est mal passé je réessaie !
05 septembre 2008 11:37:44 :
J'ai inclus les mods proposées par girou. voila maintenant on peut même appeler le fichier "m.o.n..f.i.c.h.i.e.r.JpeG" et ça marchera quand même. Faudrait quand même penser à dire deux mots au gars qui prepare les fichier (peut être que sa femme l'aquitté !!).

 Sources du même auteur

UN PETIT CHRONOMÈTRE DEGRESSIF TOUT SIMPLE EN AS2
MODIFIER LES APOSTROPHES ET AUTRES CARACTÈRES MADE IN WORD D...

 Sources de la même categorie

Source avec Zip Source avec une capture LANCER UNE GALERIE LIGHTBOX À PARTIR D'UN FLASH par beladom
Source avec Zip SUPER TWEEN PACKAGE par Acidchlorhydrik
Source avec Zip NAVIGATION DANS UN FICHIER XML par inaden
Source avec Zip Source avec une capture TWSCROLLBAR, UNE CLASSE DE SCROLLBAR SIMPLE ET PRATIQUE À UT... par Twinspirit
Source avec Zip Source avec une capture REBOND DE BALLON AVEC TWEEN par habibcode

 Sources en rapport avec celle ci

MODIFIER LES APOSTROPHES ET AUTRES CARACTÈRES MADE IN WORD D... par ourso
Source avec Zip CHARGER UNE PAGE HTML DANS UNE ANIMATION FLASH par x_mec
Source avec Zip Source avec une capture MA CLASSE DE BASE SUR LES TEXTES ( STRINGS ) par snakeeater1
Source avec Zip TRAITEMENT CHAINES DE CARACTERES (STRING) ICI SEARCH AND REP... par petite_mise_a_jour_de_la_doc
Source avec Zip Source avec une capture FRAIS2PORT par rattus

Commentaires et avis

Commentaire de Girou le 05/09/2008 09:30:47

Salut,

C'est effectivement très utile comme fonction et j'ai développé le même concept que toi dans une application.
Cependant, dans ta fonction je vois un risque de problème : un nom de fichier contenant un point !

media_setter("ma.photo.jpg") va te retourner null et non "image" car splitted[1].toString().toLowerCase() va retourner "photo"

pour contourner ce problème, voici comment j'ai procédé (adapté à ton code) :

var ind:Number = nom_media.lastIndexOf(".");
var extension:String = nom_media.substr(ind + 1);

Ah aussi, dans ta liste de média tu as oublié, entre autre, le mp3 ;o)

@+
Girou

Commentaire de pegase31 le 05/09/2008 11:32:52 administrateur CS

J'allais faire la même remarque quand j'ai vu que ce cher Girou avait déjà relevé le soucis ..

Je me permettrais donc de corriger son code comme suit :
var extension:String = nom_media.split(".").pop(); //et ça tiens sur une ligne ;)

il y a une autre erreur dans ton code, mais uniquement en as3 : un String ne peut pas être "null" ...

Mais dans le cas de ce que tu veux faire, plus il y aura de médias et plus le code sera long.
Autant utiliser la puissance du XML dans le cas d'un AS3 comme suit :

var data:XML =
<main>
<media ext="jpg" type="image"/>
<media ext="jpeg" type="image"/>
<media ext="png" type="image"/>
<media ext="flv" type="video"/>
<media ext="ai" type="null"/>
<media ext="pdf" type="download_file"/>
<media ext="mp3" type="musique"/>
</main>

function mediaSetter(label:String):String {
var ext:String = label.split(".").pop();
return(data.media.(@ext==ext).@type);
}

voili !

Commentaire de ourso le 05/09/2008 12:01:30

Ah ! une string ne peut pas être null en AS3?,mais pourtant, quand je compile cette fonction je ne reçois pas d'erreur...Celui-ci doit transformer la constante en string sinon il se mettrait à sonner non? je n'ai eu le souci ni en AS2 ni en AS3.
sinon le cas du xml à la place du switch me parait très interessante en effet. Tu as juste oublié de passer ta chaine en toLowerCase() pour la rendre compatible avec les extensions. Mais à ce moment il te faut encore rajouter une instruction sur la declaration de "ext" et ça devient peut être un peu obscur... label.split(".").pop().toLowerCase();

Commentaire de pegase31 le 05/09/2008 12:10:17 administrateur CS

obscure ? non, c'est tout à fait faisable et trés simple.

Peg'

Commentaire de ourso le 05/09/2008 12:17:27

Disons un peu ésotérique plutôt, obscur c'est moral, t'as raison! C'est une question de préférence ensuite... Sans doute d'expérience aussi. Pour l'instant je préfère voir quelle instruction déconne quand la compilateur m'indique la ligne ou je me suis trompé :D.

Commentaire de ourso le 05/09/2008 12:18:21

mais pour cette histoire de variable null tu peux m'indiquer ou je peux trouver l'info ?

Commentaire de pegase31 le 05/09/2008 12:20:03 administrateur CS

non, en fait, c'est lors de mon test en XML : le string renvoyé ne peut pas être null s'il ne retrouve pas la référence, il faut le passer "manuellement".
Mais comme je t'ai fait ça "sous le coudee, j'ai confondu.

Peg'

Commentaire de Girou le 05/09/2008 12:27:17

@Peg' : Y'a des jours ou tu m'énerve :o)

function mediaSetter(label:String):String {

var ext:String = label.split(".").pop(); A PLEURER DE SIMPLICITÉ... qu'est ce que je me suis em... avec des indexof moi

return(data.media.(@ext==ext).@type); Vu ma consommation de XML, faut VRAIMENT que je passe à l'AS3, Xpath pour AS2 c'est bien mais la syntaxe utilisant E4X c'est tout de même autre chose...

}

une remarque cependant : var ext:String = label.split(".").pop() va générer une erreur de compilation sous MTASC (probleme de typage)
alors que var ext:String = label.split(".").pop().toLowerCase() n'en génère pas... étonnant...

Et je ne trouve pas cela spécialement obscure comme notation.

@+
Girou

Commentaire de mouahaha le 05/09/2008 12:58:17

Très intéressante conversation, faut vraiment que je me plonge dans l'AS3, cette façon de gérer le XML a l'air pas mal... Merci Peg !
Et merci Ourso pour ta source ^^

Commentaire de ourso le 05/09/2008 13:05:13

Il en reste que si je mets tes modifs pegase... Le code n'est plus valable qu'en AS3... Dans ces temps de transitions autant que ça serve au plus grand nombre. Je ne rentre donc pas tes modifs pour la compatibilités mais je vais serieusement envisager ton point de vue pour mes futurs dev !
merci à tous pour votre participation... Donner c'est aussi recevoir !

Commentaire de pegase31 le 05/09/2008 13:06:15 administrateur CS

c'est l'E4X, il s'agit à peu près d'une requête lancée au XML qui ressort une "liste" (un XMLList", en fait) de ce que tu as demandé.
Dans le cas présent, une valeur d'attribut.

Si besoin, je ferais une source exemple de comment gérer ça ... c'est pas très compliqué

Peg'

Commentaire de ourso le 05/09/2008 13:13:14

Oui c'est une bonne idée.
Je me suis penché mais pas assez sur l'XML dans as3... juste le loading et le parsage des infos...mais je dois pour mon dev recupérer un flux rss qui va influer sur l'aspect du site, et ton tuto devrait me concerner.
La doc que l'on trouve sur internet n'est pas toujours très limpide, notamment sur les conditions dans lesquelles les différentes utilisations sont recommandées (je parle d'XML list). Parfois en as une se met à faire des méthodes alors qu'elles existent déjà... C'est le problème du mécano !

Commentaire de Girou le 05/09/2008 13:45:34

Pour ceux que cela intéresse, la traduction en AS2 de la fonction proposée par Pegase31 donne ceci :

import mx.xpath.XPathAPI;

var data:XML = new XML('<main><media ext="jpg" type="image"/><media ext="jpeg" type="image"/><media ext="png" type="image"/><media ext="flv" type="video"/><media ext="ai" type="null"/><media ext="pdf" type="download_file"/><media ext="mp3" type="musique"/></main>')

function mediaSetter(label:String):String {
   var ext:String = label.split(".").pop().toLowerCase();
   return(XPathAPI.selectSingleNode(data.firstChild, "/main/media[@ext='"+ext+"']").attributes.type);
}

L'utilisation du XML est une très bonne chose -> possible de charger dynamiquement la liste (donc pas besoin de recompiler si elle évolue) et dans ton idée de base de lancer le lecteur approprié, si celui-ci est aussi défini dans le xml, ou plus simplement défini en fonction du type de media (image -> image.swf) en chargeant dans un container le lecteur swf externe approprié on obtient une solution polyvalente et fortement evolutive sans toucher à l'animation de base.

function loadContent(_lien:String){
var lecteur:String=mediaSetter(_lien)
lecteur+=".swf?_media="+lien;
_container.loadMovie(lecteur)
}

Avantage de la méthode, il suffit d'adapter le XML et de créer les lecteurs 'externes'

@+
Girou

Commentaire de ourso le 05/09/2008 13:57:24

je n'ai qu'un mot à dire : Brillant !

Commentaire de pegase31 le 05/09/2008 14:16:52 administrateur CS

ben le XML reste une base de donnée très accessible .. je m'en sert aussi pour les décors de jeux ...:p

Peg'

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Remplacement d'un caractère dans un STRING [ par srappaille ] Bonjour,J'ai une variable de type STRING qui se compose toujours de la même manière à savoir :var = "mot1.mot2.mot3"et j'aimerais obtenir ceci ...var detecter le plugin flash [ par beb59 ] Salut je voulai savoir comment faire pour detecter la version du plugin flash installer chez le client ???merci d'avance Detecter si la souris est dans l'animation [ par Smeito79 ] Slt,je souhaite créer un curseur qui suit la souris quand elle est sur l'animation et qui suis un guide quand la souris n'y est plus!J'ai voulu mettre Detecter existance d"une URL [ par iyadlina ] Bonjour,J'ai chargé des photos via loadmovie("chemin+photox",) et j'ai fait une boucle pour le X.Ce que je vux c'est ne pas faire de limite et gérer l variable & switch [ par ICIoBRa ] Salut a tousJ'ai le code suivant :variable1 = random(5) ;variable2 = 0.00 ;switch (variable1) { case 0: variable2 = 0.02 ; case 1: variable2 = 0.01 ; passage de variable string en variable number [ par done_1 ] je suis en train de taffer sur un jeu, mais c pas la le probleme...et donc apres recupération de donné sur ma base php(la pas de probleme) j'obtiens d Comment detecter si un mot est déjà dans un composant LIST ? [ par lechti62 ] Bonjour, comment verifier qu'un nom existe déjà dans une classe LIST si on en connais pas l'index par exemple ? faut il passer en revue tous les index Detecter saisie clavier dans page HTML a partir d'un swf [ par Nil83 ] Voila ma question: j'ai une fenetre html classique, et je voudrais savoir s'il est possible d'y intégrer un swf qui détecterai les saisies claviers et difference entre mediaplayback et media display-controller [ par ludm ] Bonjour,Quel est la différence entre le composant media playback et l'association d'un media display et media controller dans Flash MX 2004 ?Merci d'a problemes menu et liens [ par athenais ] bonjour,j'ai un probleme ( debutant en flash):je suis en train de faire un site avec un menu horizontal: - accueil - concerts - bio - mediaj'aimerais


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales