Is there a way to trigger an event when data that is being sent to a PHP file is finished? I’m putting together an “Export to JPEG” thing and am chunking up the image data as to not get the “Script is running too long” type response. Here is the code I’ve got:
import flash.display.BitmapData;
graphic_mc.text_txt.text = "Jibberish!!!";
export_mc.onPress = function() {
output(graphic_mc);
};
var outputText:String;
function output(mc:MovieClip) {
trace(mc);
var blockSize:Number = 50;
var numBlocks:Number = 1 + Math.floor(mc._height / blockSize);
var completedBlocks:Number = 0;
var currentBlock:Number = 1;
var frameCounter:Number = 1;
onEnterFrame = function() {
trace(this);
trace(frameCounter);
outputText = frameCounter.toString();
frameCounter++;
// let flash render a few frames before rendering a block
if (currentBlock * 5 != frameCounter) return;
//this.createTextField("percent_txt", 9999, 0, 0, 200, 200);
trace(mc._width + " / " + mc._height + "
");
outputText += mc._width + " / " + mc._height + "
";
snap = new BitmapData(mc._width, mc._height);
snap.draw(mc);
var w:Number = snap.width;
var h:Number = snap.height;
var results:LoadVars = new LoadVars();
results.onLoad = function(success:Boolean) {
if (success) {
trace("HIT!!!");
outputText = "Load HIT!!!";
completedBlocks++;
} else {
trace("
************** !!!!! Error connecting to server. !!!!! **************
");
outputText = "
************** !!!!! Error connecting to server. !!!!! **************
";
}
}
var variables:LoadVars = new LoadVars();
var firstLine:Number = (currentBlock - 1) * blockSize;
var lastLine:Number = currentBlock * blockSize - 1;
if (lastLine > mc._height - 1) lastLine = mc._height - 1;
var lastPixelOfLine:Number = mc._width - 1;
trace("
*** "+firstLine +" / "+ lastLine +" / "+ lastPixelOfLine+" ***
");
outputText = "
*** "+firstLine +" / "+ lastLine +" / "+ lastPixelOfLine+" ***
";
//for (var i = 0; i<h; i++) {
for (i = firstLine; i <= lastLine; i++) {
var pixel:String = "px" + i;
//trace(pixel);
variables[pixel] = "";
for (var j = 0; j<w; j++) {
/*if (percent_txt.text != Math.round((((j + 1) + (i * w)) / (w * h)) * 100)) {
percent_txt.text = Math.round((((j + 1) + (i * w)) / (w * h)) * 100);
updateAfterEvent();
trace(percent_txt.text);
}*/
var pixelData:String = snap.getPixel(j, i).toString(16);
if (j < w - 1) {
pixelData += ",";
}
variables[pixel] += pixelData;
}
trace(pixel + "=" + variables[pixel] + "
");
outputText += pixel + "
";
}
//var targetPHP:String = "http://www.capella-id.com/media_scripts/jpeg_maker/export.php?now=" + getTimer();
variables.width = w;
variables.height = h;
variables.block = currentBlock;
variables.block_size = blockSize;
//variables.display = true;
variables.sendAndLoad("http://www.capella-id.com/media_scripts/jpg_maker/export.php", "results", "POST");
trace(variables.getBytesLoaded());
trace(variables.getBytesTotal());
outputText += "
1. *** "+currentBlock +" / "+ numBlocks +" ***
";
trace(completedBlocks);
outputText += completedBlocks.toString();
if (currentBlock == numBlocks) {
trace("GET URL
");
outputText = "GET URL
";
var finalCall:LoadVars = new LoadVars();
finalCall.display = true;
finalCall.send("http://www.capella-id.com/media_scripts/jpg_maker/export.php", "_blank", "POST");
//getURL("http://www.capella-id.com/media_scripts/jpg_maker/export.jpg", "_blank");
}
currentBlock++;
trace("
*** "+currentBlock +" / "+ numBlocks +" ***
");
outputText += "
2. *** "+currentBlock +" / "+ numBlocks +" ***
";
if (currentBlock > numBlocks) {
snap.dispose();
delete onEnterFrame;
}
}
}
stop();
Any help would be great!!!