2012-12-29 51 views
0

我有一個非常簡單的代碼塊,強制刷新影片剪輯?

loadingMc.visible = true; 
trace("ok"); 
// send photo to server 
loadingMc.visible = false; 

發送照片需要3-5秒,但影片剪輯僅在過程的最後一秒變爲可見。在進程開始時,我可以在輸出中看到「ok」消息。所以我假設問題不在重繪影片剪輯。有沒有任何選項可以在進程啓動之前強制重繪?

更新: 發送到服務器部分;

upload.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent):void{ 
    loadingText.visible = true; 
    trace("ok"); 
    var bmd:BitmapData = new BitmapData(1024,768,true,0); 
    bmd.draw(imageArea); 
    savePicToServer(bmd); 
}); 

function savePicToServer(bmd:BitmapData):void 
{ 
    var jpgEncoder:JPGEncoder = new JPGEncoder(85); 
    var jpgStream:ByteArray = jpgEncoder.encode(bmd); 

    var loader:URLLoader = new URLLoader(); 
    configureListeners(loader); 
    var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); 
    var request:URLRequest = new URLRequest("http://localhost/test/upload.php?key=prvkey"); 
    request.requestHeaders.push(header); 
    request.method = URLRequestMethod.POST; 
    request.data = jpgStream; 
    loader.load(request); 
} 

在COMPLETE事件中;

loadingText.visible = false; 

回答

1

編輯

剛剛從閱讀你的代碼,我不明白爲什麼這不應該工作 - 但FP有時做奇怪的事情。

在類似的情況下,我用setTimeout()迫使玩家耽誤後續行動,並允許屏幕刷新:

upload.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent):void{ 
    loadingText.visible = true; 
    trace("ok"); 
    setTimeout(doSave, 10); 
}); 

private function doSave() : void { 
    var bmd:BitmapData = new BitmapData(1024,768,true,0); 
    bmd.draw(imageArea); 
    savePicToServer(bmd); 
} 

如果這仍然不起作用,也許更長的超時會做的伎倆 - 但通常10ms應該足以刷新屏幕。

編輯

另一種方法是添加和刪除ENTER_FRAME監聽器,以確保框架真的被刷新:

upload.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent):void{ 
    loadingText.visible = true; 
    trace("ok"); 
    addEventListener(Event.ENTER_FRAME, onNextFrame); 
}); 

private function onNextFrame(ev:Event) : void { 
    removeEventListener(Event.ENTER_FRAME, onNextFrame); 
    doSave(); 
} 

private function doSave() : void { 
    var bmd:BitmapData = new BitmapData(1024,768,true,0); 
    bmd.draw(imageArea); 
    savePicToServer(bmd); 
} 
+0

我寫了這樣的簡單性。我的問題是MC不會變成可見_earlier_。我沒有隱藏它的問題。我更新了這個問題。 –

+0

我編輯了我的答案。 – weltraumpirat

+0

40爲我工作,謝謝。 –