2010-08-16 6 views
2

J'ai un fichier dont je n'ai pas la source - un en-tête flash avec une intro sonore odieuse et j'ai besoin de couper tous les sons. Sans la source, je suis limité quant à ce que je peux faire. J'ai un code as3 que j'utilise pour essayer de charger le swf et de le rendre muet (en FlashDevelop). Voici le code en question:as3 charger, jouer et couper le swf externe

package 
{ 
import flash.display.MovieClip; 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.media.SoundTransform; 
import flash.net.URLRequest; 
import flash.display.Loader; 
import flash.media.SoundTransform; 

public class Main extends Sprite 
{ 
    private var mLoader:Loader; 
    private var mc1:MovieClip; 
    private var holder:Sprite; 
    private var mSound:SoundTransform; 

    public function Main():void 
    { 
     if (stage) init(); 
     else addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event = null):void 
    { 
     var mRequest:URLRequest = new URLRequest('header_v8.swf'); 
     mLoader = new Loader(); 
     mLoader.load(mRequest); 
     holder = new Sprite(); 
     holder.addChild(mLoader); 
     addChild(holder); 
     mSound = new SoundTransform(0); 
     holder.soundTransform = mSound; 

    } 

} 

}

Ce code ci-dessus joue encore l'audio et le fichier SWF original n'est pas affiché. Donc, mes questions sont:

Comment couper l'audio externe? Comment afficher le swf externe comme il le fait en le visionnant directement?

Toutes les suggestions ou des pointeurs vers des exemples utiles/documentation seraient grandement appréciés

Répondre

4

Courez-vous cela dans un lecteur de débogage? En regardant votre code, il semble qu'il devrait jeter au moins une erreur sur cette ligne:

holder.addChild(mLoader); 

Il semble holder n'est pas initialisés à ce moment-là. Peut-être qu'il y a une erreur que vous ne voyez pas qui casse votre code ... Le code pour couper le son semble correct (bien que je ne l'ai pas essayé). Peut-être que vous pourriez l'appliquer au holder au lieu du contenu lui-même; sinon, il se pourrait que votre fichier swf d'en-tête soit partiellement chargé et commence à lire les sons avant que votre gestionnaire complet ne soit appelé.

De plus, SoundMixer vous permet de contrôler le volume global (je le mentionne parce que même si ce n'est peut-être pas la façon idéale de le faire, peut-être que cela fonctionne ici).

Modifier

Ce assourdit efficacement le swf chargé dans un test rapide, je l'ai fait:

var mRequest:URLRequest = new URLRequest('banner.swf'); 
var mLoader:Loader = new Loader(); 
mLoader.load(mRequest); 
var holder:Sprite = new Sprite(); 
holder.addChild(mLoader); 
addChild(holder); 
var t:SoundTransform = new SoundTransform(0); 
holder.soundTransform = t; 

J'ai enlevé le gestionnaire complet, car il est plus nécessaire.

+0

En y repensant, la variable de support n'est pas vraiment nécessaire. après l'avoir enlevé et en utilisant simplement addChild (mLoader); il a chargé le swf comme prévu. Cependant, après avoir vu dans le lecteur de débogage que j'ai découvert le swf chargé est un AVM1Movie. Je vais devoir faire d'autres recherches sur la façon de charger et de couper le son correctement. – tomfmason

+0

Dans ce cas, vous ne pouvez pas communiquer directement avec lui. Mais peut-être (je n'ai jamais eu à le faire) avoir un titulaire «Sprite» et l'inhibition, il pourrait travailler pour couper le swf chargé. –

+0

J'ai essayé cela (voir OP édité) mais il continue à lire l'audio du swf chargé. Aucune suggestion? – tomfmason

Questions connexes