Je charge un fichier swf dans mon application principale en utilisant URLLoader, je veux obtenir la couleur d'arrière-plan du fichier swf chargé. (J'ai entendu dire qu'une solution serait de lire le code d'octet du swf chargé)Comment puis-je obtenir la couleur d'arrière-plan d'un fichier swf chargé?
Répondre
Oui, vous devez regarder dans les données swf binaires. Here est une brève description du format swf. Et this est un petit détail sur les différents types de tags. Votre exigence est de trouver la balise SetBackgroundColor (tag type = 9), qui est généralement la première ou la deuxième balise du swf.
Les octets dans le fichier swf suivent peu l'ordre endian, donc vous devez faire attention en lisant les données. Et surtout ils seront compressés (les trois premiers octets seront "CWS") donc à partir de 9 octets (y compris le 9ème), toutes les données doivent être décompressées (ByteArray.decompress) avant le traitement.
code SomeExample :)
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
public class Test1 extends Sprite{
private var stream:URLStream;
public function Test1():void {
stream = new URLStream();
stream.load(new URLRequest("some.swf"));
stream.addEventListener(Event.COMPLETE, onComplete);
}
private function onComplete(e:Event):void {
var bytes:ByteArray = new ByteArray();
bytes.endian = Endian.LITTLE_ENDIAN;
stream.readBytes(bytes, 0, 8);
var sig:String = bytes.readUTFBytes(3);
trace("SIG = " + sig);
trace("ver = " + bytes.readByte());
trace("size = " + bytes.readUnsignedInt());
var compBytes:ByteArray = new ByteArray();
compBytes.endian = Endian.LITTLE_ENDIAN;
stream.readBytes(compBytes);
if (sig == "CWS") {
compBytes.uncompress();
}
var fbyte = compBytes.readUnsignedByte();
var rect_bitlength = fbyte >> 3;
var total_bits = rect_bitlength * 4;
var next_bytes = Math.ceil((total_bits - 3)/ 8);
for(var i=0; i<next_bytes; i++) {
compBytes.readUnsignedByte();
}
trace("frameRate = " + compBytes.readUnsignedShort());
trace("frameCount = " + compBytes.readUnsignedShort());
while(true) {
var tagcodelen:Number = compBytes.readUnsignedShort();
var tagcode:Number = tagcodelen >> 6;
var taglen:Number = tagcodelen & 0x3F;
trace("tag code = " + tagcode + "\tlen = " + taglen);
if (taglen >=63) {
taglen = compBytes.readUnsignedInt();
}
if(tagcode == 9) {
trace("found background color");
trace("color is: RED=" + compBytes.readUnsignedByte() +", GREEN = " + compBytes.readUnsignedByte() + ", BLUE = " + compBytes.readUnsignedByte());
break;
}
compBytes.readBytes(new ByteArray(), 0, taglen);
//break;
}
}
}}
Réponse impecable et exemple! Je vous remercie. – Radu
Votre fichier SWF doit le transmettre à une page Web avec JS.
getURL ("javascript: setColour (" + DESIRED COLOR + ")");
La fonction "setColour" doit bien sûr faire ce que vous voulez qu'elle fasse.
OP veut obtenir la couleur, pas le définir. Même si la question était de définir la couleur, comment le feriez-vous via javascript? Le fichier SWF est chargé sur un autre fichier SWF, pas directement sur une page Web. – Amarghosh
- 1. Comment obtenir la couleur d'arrière-plan d'un swf chargé?
- 2. Comment obtenir la taille d'un swf chargé dynamiquement avec javascript?
- 3. Comment contraindre swf chargé?
- 4. Le fichier SWF chargé ne s'affiche pas
- 5. Dans AS3, comment obtenir la taille visible du fichier SWF chargé contenant un masque?
- 6. Comment mettre à l'échelle un fichier SWF chargé?
- 7. dimensions de l'étape swf chargé
- 8. police en swf chargé dans un swf chargé en swf !!! le texte disparait
- 9. Menu contextuel pour SWF chargé
- 10. Comment puis-je obtenir la largeur/hauteur de l'étage d'un swf chargé dans AS2?
- 11. Redimensionner le fichier SWF chargé pour l'insérer dans le canevas
- 12. SWF chargé devient plus lent
- 13. Ajout d'événements de souris à un fichier SWF chargé dynamiquement
- 14. Flash Double-cliquez sur un fichier SWF chargé en externe
- 15. Comment régler la taille (largeur, hauteur) de swf externe chargé
- 16. Accéder à une fonction dans un fichier .swf chargé?
- 17. Écouter des événements à partir d'un fichier SWF chargé?
- 18. comment obtenir la taille du fichier swf dans smarty?
- 19. Comment savoir quand le swf principal est complètement chargé?
- 20. comment forcer la nouvelle version du fichier flash .SWF à être chargé par les utilisateurs?
- 21. Contrôler les Mc d'un SWF chargé
- 22. Erreur d'écoute dans le swf chargé
- 23. AS3 Passer FlashVars à swf chargé
- 24. Obtenir la taille du fichier jar chargé par urlclassloader
- 25. Déchargement swf du fichier SWF parent
- 26. Paramètre à swf chargé avec la classe loader
- 27. AS3: Définition de la taille du swf chargé
- 28. comment obtenir des dimensions de fichier SWF en PHP?
- 29. matlab obtenir la couleur
- 30. Flex 3 (Action Script): Comment accéder à une fonction à partir d'un fichier swf chargé?
Êtes-vous le charger par '' URLLoader' ou Loader'? Je ne sais pas comment le faire de toute façon - en attendant une réponse. – Amarghosh