2010-09-08 91 views
1

這裏是我的SWF加載代碼:當外部SWF到達X幀時,我該如何卸載它?

function loadBall(e:MouseEvent):void{ 
var mLoader:Loader = new Loader(); 
var mRequest:URLRequest = new URLRequest("ball.swf"); 
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 
mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler); 
mLoader.load(mRequest); 
} 

function onCompleteHandler(loadEvent:Event){ 
    currentMovie = MovieClip(loadEvent.currentTarget.content) 
    addChild(currentMovie); 
    trace(loadEvent); 
} 
function onProgressHandler(mProgress:ProgressEvent){ 
var percent:Number = mProgress.bytesLoaded/mProgress.bytesTotal; 
trace(percent); 
} 

我想檢測是否ball.swf已達到244架,然後卸載它。有沒有辦法做到這一點,而無需下載額外的類?

回答

1

在舞會影片剪輯的第244幀中,您可以派發一個事件來通知MainTimeline已經到達了幀244,那麼您將需要刪除對該球的所有引用,並讓垃圾收集從那裏處理它。

 
//in the ball movie clip, on frame 244 

this.dispatchEvent(new Event("End of Movie")); 

//in the main timeline , after loading the swf 

function onCompleteHandler(event:Event):void 
{ 
    //keep the ball movie clip as a local variable 
    var ball:MovieClip = event.target.loader.content as MovieClip; 
    ball.name = "ball"; 
    ball.addEventListener("End of Movie" , remove , false , 0 , true); 
    addChild(ball); 
} 

function remove(event:Event):void 
{ 
    event.target.removeEventListener('End of Movie' , remove); 

    //now you can retrieve the ball mc by its name and remove it from the stage 
    this.removeChild(this.getChildByName('ball')); 
} 
0

訂閱階段的Event.ENTER_FRAME事件,並檢查您創建的影片剪輯的currentFrame財產。

private static final BALL_END_FRAME : int = 244; 

private var _ball : MovieClip; 

function onCompleteHandler(event:Event):void 
{ 
    _ball = event.target.loader.content as MovieClip; 
    addChild(_ball); 

    stage.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); 
} 

function onEnterFrameHandler(event:Event):void 
{ 
    if (_ball.currentFrame == BALL_END_FRAME) 
    { 
     removeChild(_ball); 
     stage.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler); 
    } 
}