2012-12-29 27 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为我工作,谢谢。 –