2011-05-27 4 views
0

J'ai une classe a fla appelée draw.fla. La classe de document associé à tirage est Draw.as Le code à l'intérieur Draw.as est le suivantChargement d'un swf dans un autre swf accéder à des fonctions dans le swf enfant

package 
{ 
import flash.display.MovieClip; 
import flash.display.Graphics; 

public class Draw extends MovieClip 
{ 
    public function drawCircle1(color:Number):void 
    { 
     graphics.beginFill(color); 
     graphics.drawCircle(100,100,40); 
     graphics.endFill(); 
    } 

} 
} 

Le swf résultant est appelé draw.swf.

J'ai un autre fichier appelé test.fla.

Ce qui suit est le code sur la première image de la ligne de temps principale.

import flash.events.Event; 
import flash.events.IOErrorEvent; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.display.Loader; 

var swfLoader = new Loader(); 
var color:Number; 

color = Math.round(Math.random()*0xFFFFFF); 
var urlReq:URLRequest = new URLRequest("draw.swf"); 
swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoadComplete); 
swfLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, swfLoadError); 
swfLoader.load(urlReq); 

function swfLoadComplete(evt:Event):void 
{ 
    var loader:Loader = Loader(evt.target.loader); 
    addChild(loader.content); 
    swfLoader.removeEventListener(Event.COMPLETE, swfLoadComplete); 
} 

function swfLoadError(evt:IOErrorEvent):void 
{ 
    trace("Unable to load swf "); 
    swfLoader.removeEventListener(IOErrorEvent.IO_ERROR, swfLoadError); 
} 

J'ai chargé dwaw.swf dans test.swf comme vous pouvez le voir. Y at-il de toute façon que je peux accéder à la fonction drawCircle1 de Draw à partir du test.fla. En fait, j'ai besoin de passer la couleur de la valeur comme argument lors de l'accès à cette fonction.

Répondre

3

Si je ne me trompe pas, une fois que le chargeur est complet vous pouvez simplement faire MovieClip (chargeur .content) .drawCircle1 (0xFF0000) ;.

1

Loader.content devrait être cette classe, et la fonction peut être appelé par son nom avec la syntaxe de support carrée:

function swfLoadComplete(evt:Event):void 
{ 
    var loader:Loader = Loader(evt.target.loader); 
    addChild(loader.content); 

    //trying to call function drawCircle1 
    loader.content["drawCircle1"](0xFF0000); 

    swfLoader.removeEventListener(Event.COMPLETE, swfLoadComplete); 
} 
Questions connexes