ActionScript 3.0 :: URLLoader Load Data In A Separate Thread?
Jul 14, 2009
I understand the Flash and AS3 is single-threaded, at least at the user level. I would like to understand how asynchronous data loading is handled by the Flash player.
For instance, if I run CPU-intensive code that runs beyond the normal frame (lets say it runs on ENTER_FRAME, and consumes 1/4 per call). Does this leave any CPU cycles to load data from a URLLoader?
If http loading is truly synchronous, right down to handling the TCP/IP stack, one would get horrible performance. In Windows programming, I can do http access asynchronously (in which case the Windows libraries are doing either input on a separate thread, or doing hardware-level interrupts to handle the data -- I provide an asynchronous callback that may be on its own thread). Or, I can do synchronous download, in which case there will be hardware buffering, but my application is actively waiting for each buffer of data to be delivered by the hardware/OS combination.
URLLoader is asynchronous, but what does that mean? Does it mean that I can run the CPU and still download data? Or, will my download speed slow to a crawl if my Flash application is under heavy CPU load? Understanding how this works will help me design my product better, which both uses a lot of CPU, and downloads a lot of data (to the bandwidth limit of the network, if possible).
How to flush SharedObject in a separate thread? FMS is blocking the program during write, and to save more than 2,000SharedObject takes about 15 seconds.
I have Flash website, and I load data from XML file with urlLoader. If I change data in XML-file, refresh doesn't update data in site. I need to publish it again! How can I make this automatic, that I only need to refresh when data is changed? I can't allways publish when I change somethin in XML-file.
1 - SWF must have ability to loading binary data from any domain.
2 - SWF cant load policy XML file from url, cause upload form allows me only to upload swf files, so I cant include any other data. I tried:
Security.allowDomain("*");
But it works only for SWF files.I tried to embed policy XML file:
var dataXML:XML = <?xml version="1.0"?> <!-- http://www.foo.com/crossdomain.xml --> <cross-domain-policy>
[code]....
This will make an security error, if file is from different domain than SWF file.Its possible to get binary data from JavaScript using ExternatInterface in AS3 code.Here is cross-browser library for reading files binary: binary reader and later version jDataView.
I use flex builder to compile a single class to load an text data from the same domain.it works perfect in IE browser. But something is wrong with the firefox browser.take a look at the following code:
I am trying to get my PHP variables from my load.php document to my flash-document.That all works fine and I am able to get my data down to flash variables inside my function.But, I would like to be able to access this data from outside of this function which gets the data - unfortunately I cant, or.. Don't know how to. I hope that you are able to shed a light upon my problem. So here goes, this is my code:
Code: var myLoader:URLLoader = new URLLoader() myLoader.dataFormat = URLLoaderDataFormat.VARIABLES
How to retrieve xml data in an aspx page after sending it using URLLoader.load
This is the flash code i am using:
var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.TEXT; //tried by giving VARIABLES also urlLoader.addEventListener(Event.COMPLETE, handleComplete); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
[Code]....
I were able to accept data in above statement when i send a string in var1 say "test". But on sending xml above error is getting.I have tried to load the xml data in XMLDocument also.
In AS20 i used sendAndLoad method to send and reterive xml data.
I am making rest calls with a urlload.load(urlRquest).
also urlRequest.method = URLRequestMethod.POST; urlRequest.contentType = "application/xml";
When I make the calls within the Flash IDE, I get HTTPStatusEvent.status = 400 (or whatever) when an error occurs. And the IOErrorEvent.data contains xml (or sometimes a string).
However, when I run the swf in a browser (Firefox Mac or PC), the HTTPStatusEvent.status = 0, and the IOErrorEvent.data is empty. (Interestingly in Safari Mac, I do get the 400 status, but still no data.)
I am trying to parse a RSS feed and load the data into separate labels.
For example i want to pick up all the title values within each item of the RSS feed and place that in a designated label.
I am parsing the feed correctly but i am having trouble trying to load the data into the label's, i've tried using the below but the same Title value is entered for 9 out of the 10 labels[code]...
As I know. Flex/AS is single threaded.I want to write an application that talking to server side, also display the data streamed from server.Since Flex is single threaded. I am not sure how could I do this.Better not involve something like "implement your own multi-thread model"
I am writing a simple Tcp server in Unity and have my Flash application connects to it.I found a great tutorial on threaded Tcp server online, and my flash app connects to it nicely. However, I am not able to send data outside of the listening thread to the connected client. I tried to create a global reference of the Tcpclient obtained inside of the thread. However, that reference (sclient) only works inside of the listening thread, printed Null to console outside of the thread. There must be something I can do to retain the TCP client reference for later use or access it from outside of block thread.
Been butting my head against the wall on this one. Im making a news app that loads xml data and diplays the data onto 3 seperate textfields. The 3rd textfield has auto size set to true, so that the height of each instance of the attached movie is always going to be different from each other. I need to figure out how to get the height from each instance of the attached movie and use those numbers for the verticle tiling so that they dont run into each other.
heres what I got so far. Its the "duke news" box. If you scroll down in the news box, you will see that the text starts running into each other.
in AS3 I'm trying to load a URL (a Yahoo address) into the application so I can process the source code and pull things out of it.However, when I load it, or any other page, I get 0 bytes back.Here's my current code.
private function doSearch():void { var req:URLRequest = new URLRequest("http://yahoo.com"); var loader:URLLoader = new URLLoader();
All Im trying to do is post firstname, lastname and emailaddress from a form inside my swf to a php file and then get that php file to return a result back to my swf.
First of all i tried using external interface to handle this because the server its going to run on doesnt support PHP.
I had the SWFgrab the data from the text fields, pass the data to JS through external interface, then the JS would use jquery AJAX to execute the php file, then the JS would grab the results from the AJAXd div, then pass the data back through to the SWF. It was a bit of a circle jerk but it worked.
However, the PHP script that needs to be executed in a different domain as the SWF. I forgot that this would cause an issue. I then tried to setup AJAX crossdomain policies, but this is going to be a reasonably high traffic site and i felt that the proxy options that i found were kind of slow.
I realised that what id been doing so far was probably over complicated anyway. So, i went back to basics and thought id try using the URLLoader to load in the php file as a string. I setup a crossdomain.xml file on my server that will be hosting the PHP and used the loader to grab the PHP file.
This works fine, all the PHP does is echo out 3 comma separated values which i then split into an array and use in my SWF. I get the values no problem. However, my status bar in firefox keeps saying that its still transferring.
Ive tried telling the PHP script to 'exit();' after its echo'd out my results. Ive tried telling the URLoader to .close(); when its grabbed the data, neither of which stop it from transferring. Im also using the web debugging proxy 'Charles' and that says that the connection opened and closed successfully, but firefox still says that its transferring.[code]...
Having trouble get the URLLoader class to work.Unsure but I must be missing something basic.Just trying to send name/value pairs from asp to flash.AS3 Code:
Code: var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES;
Im working with this little sidescroller tile based game, im saving maps to xml file. But got this little problem. I would like to do something like this.
var currentLevel:int = 1; var myMap:String = "map" + currentLevel; var myMap = xmlData.myMap.tiles.text();
so i would like to put that variable to that getting data from xml so if my currentLevel changes its getting diffrent data from xml file. so is that possible to put variable to that xmlData.myMap.tiles.text();
In my app, I load multiple xml files. And to load those, I always create a new URLLoader. Nothing special. The first file works fine, the second one does, too. The third one, however, reports to have loaded fine, but the data it holds is actually the data of the second file. The current workaround is to load the third file twice, which somehow works... weird.
Code: var myData:URLRequest=new URLRequest("scrip.php"); myData.method=URLRequestMethod.POST; var variables:URLVariables = new URLVariables();
[Code]......
to send data to a script and I want it to go to that page too. Kind of like a if you had a flash login screen that just took a id and it sent you to the next page with that. I can do it with get put I need the id hiden
i've been setting up a high score table in my game, and everything is working, but i cant work out how to get variables from the URLLoader.data that im retrievingif i trace loadedScores.data, i get this&name1=matt&score1=323250&name2=1234567890123456.. . and so o've tried passing it to a URLVariables constructor, but it says the string doesnt contain the correct name/variable pairs or something, and loadedScores.data.name1 doesnt work.
I am loading data from php using the echo method into flash via the URL loader:URLLoader method. The data then gets assigned to an objectMy problem is that the loaded data is being imported in fine and I can trace it and even display it in a text box, but if I try and use this data in a conditional statement - the statement just won't recognize its value?
My PHP---v $row = mysql_fetch_array($query); echo "result=success";
How can I parse my incoming string returned by server and get values?
Look at the code below, that is part of a class I am writing:
Code: var PHPURLRequest:URLRequest = new URLRequest(MyServerURL+"myscript.php"); var PHPsendVars:URLVariables = new URLVariables(); var PHPLoader:URLLoader = new URLLoader();
I am loading data from php using the echo method into flash via the URL loader:URLLoader method. The data then gets assigned to an object.My problem is that the loaded data is being imported in fine and I can trace it and even display it in a text box, but if I try and use this data in a conditional statement - the statement just won't recognize its value?[code]My problem is in green above. The variable/data being imported in is indicating which measuring unit the user preferred - "inchs" for inch's or "cms" for centimeter's.The statement never seems to recognize this data and always proves false and 'else' is executed.However if I instruct the data to be displayed in a text box eg."display.text = n.unit;" The text box displays the correct result as if the data has came across fine?
Without getting into the details of why (its for school) I'm trying to use a custom preloader I've created to load a Flash video.I've created the animations, and the loader functions, but on the Event.COMPLETE event, how do I pass the data I've loaded into myUrlLoader to an FLVPlayback component?Or should I even be using the FLVPlayback component? Everything up till:
myUrlLoader.addEventListener(Event.COMPLETE, function(e:Event){ //what do I do? });
Im creating flash game that have the functionality to capture/record its gameplay that can be viewed later by the user, like a replay.
As for now Im already able to record the game and write it into a flv format in a ByteArray variable.
What Im working right now is how to send that ByteArray(the video file) to a php script and save it to a web server.
I've run into the URLLoader in flash where it can send the data and php will receive it thru the POST method. Unfortunately, the ByteArray containing the flv data must be first correclty encoded for php to read it. I figured this out from the example in the net where it does the same thing only that it is only sending a JPEG ByteArray instead of a FLV format using the JPEGENCODER.
Is there any existing class like the JpegEncoder for FLV format or any Video formats? Or any work around like creating the encoder my self?
here is my current code to send the ByteArray
//send byteArray to a php script var request:URLRequest = new URLRequest(url); request.method = URLRequestMethod.POST;
I have a queue of messages that I would like to send to a URL and I would like to remove messages from that queue only after I am sure they have been successfully sent. To do this I need to know in the COMPLETE event for the URLLoader exactly what data was sent so that I can remove the correct message from the queue.That is if I have something like this.
var urlRequest:URLRequest = new URLRequest(targetUrl); var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
How ever when I keep getting back "error:empty request". I emailed the site owner and he said that my program may be dropping the data during redirects.[URL]
I have a URLLoader which normally requesting the data to be in Text format, anyway on a specific conditions it might gets a Binary as result, which is actually just 1 integer number in binary format. Anyway the conversation :
[Code]...
doesnt passing anymore since the result data is in text forma due the request header... How to convert the result data into integer ?
I am a fairly new as3 user and am working on a video player that loads an xml file into a URLloader as a playlist. I have everything working but I want to add a few buttons to change the content of the playlist. All of the data will come from the same xml document, so I don't think i have to reload the xml. I can get the content to load when the button is pushed, but it jsut adds to the previous content instead of replacing i. How to clear the content before adding?
Here is my code (that relates to this) so far.... public class playlist_controller extends MovieClip { private var xml_loader:URLLoader; public function playlist_controller():void { ////load the xml file xml_loader = new URLLoader(); [Code] .....