ActionScript 3.0 :: Check If A URLStream On A Loader Is Open Or Closed
Jun 30, 2010
I have to be able to cancel and kill a Loader process properly and many times. If I dont do this, it seems that the flash player (at least on mac) eventually crashes as some loader processes are flying about , strangling the CPU.
There doesnt seem to be a straightforward way to know this and just calling a Loader.close causes an error, if the stream is not open.
I have an animated dropdown menu with 7 buttons. Each button slides down it's submenu.They're setup so that they open when you click them, but automatically close when you move the mouse out of the area of the given menu/submenu. If i permitted for more than one submenu to be open at a time, then size of the menu in total would be too big.Ok what I need is that, in plain language, when menu 1 is open - the rest is closed. But the menu 1 will close when you click menu 2, not before. OK, if my explanation was too lame here's the real thing, so you can get the idea of what i want:
I would like to display a message in flash "we are open" or "we are closed" based upon time. Naturally I can do this for the users local time on their system, but is it possible to work out if their time is different to UK time (GMT) and display those messages accordingly. After all I don't want a user to see a message "we are open" at 1pm their time - they could be in Japan and it'd be about 4am UK time. Is this possible to work out the time difference on any system?
we're developing an app that should be able to open specified file with default editor application. (so if it is .doc - it suppose to be opened by MSWord or openOffice)
But I also need to wait until user will close the editor, check if it was changed (by size and date), and upload it to the server.
So the following steps:
1) find def editor
2) open file
3) wait it be closed
4) do smth after that with the file.
now results of my research: -> opening by def editor is simple: file.openWithDefaultApplication();
but there is no way to know that editor is closed (maybe by checking that file is not locked in timer???)
-> i can start the native process and pass file as parameter BUT looks like the code NativeApplication.nativeApplication.getDefaultApplication(file.extension); does not work for any extension :( - it doesnt work for "rtf", "doc" but works for "pdf"... and [file.openWithDefaultApplication()] works fine with any file!
In Flex (Flash Builder 4) I am opening a new window via PopUpManager.addPopUp. I have timer code that runs in my component and I need to stop my timer when that window opens and start the timer again when the window closes.
I figure it's easy enough to stop the timer in the function that opens the window, but how can I start the timer again when the window closes?
Is there a way to tell if there is a pop-up window in front of my component, or if a specific pop-up window is still open via PopUpManager?
okay, so obviously there is stuff missing from my code b.c i dont feel like copying it all over. its basically an XML controlled style blog, and i'm trying to keep track of whether an entry is open (0), or closed (1), and those values are being stored in 'myArray'. my question is, why isnt that call to myArray overwriting the existing data? i know i have doen this before (maybe not in this fashion, but i know its possible).
I would like to display a message in flash "we are open" or "we are closed" based upon time. Naturally I can do this for the users local time on their system, but is it possible to work out if their time is different to UK time (GMT) and display those messages accordingly. Afterall I don't want a user to see a message "we are open" at 1pm their time - they could be in Japan and it'd be about 4am UK time.Is this possible to work out the time difference on any system?
actionscript but have managed to load an external .SWF file into an existing flash file.I have a button that runs the following code which successfully removes the loader:
removeChild(myLoader); SoundMixer.stopAll();
My problem is that if I click to go elsewhere my loader keeps playing.What code can I include on all my other buttons to unload the loader before going somewhere else in my flash file? I've tried just running the 2 lines above but get an error because sometimes myLoader doesn't always exist.
I have created a photo gallery, following this tutorial:URL...However I want the user to be able to click a thumbnail, which triggers a function to unload the previous image, and then reload the selected image.[code]
I am loading an image using Loader class and with URLRequest, but for some reason I am struggling to reference a file in a sub folder of the root (where the SWF is exporting to) this is local testing and I am assuming that if I refer using an absolute path on a web server it would work - but I do prefer to use relative paths for simplicity.I get the above error, but I know that the file name is correct as moving it to the same folder as the SWF works fine - but in implementation should I wish to organise hundreds of JPGs and create a gallery it would be a bit messy to store them at root level. As mentioned previously I am working on a local drive at present, and have no plans to move to a web server as this is just a test file for my own learning purposes.i have tried "folder/filename.jpg" and even on the unlikely side "folderfilename.jpg" and even further far-fetched "../rootfolder/folder/filename.jpg".The only issue is the path, I am sure of it - but the filename is correct.
I need to check to see if the connection is already open, and if so, remove it so I can reconnect (sending a new variable on the new connection).[code]...
A NetStatusEvent with info.code of "NetStream.Connect.Closed" is dispatched by NetConnection when a NetStream is closed. This seems kind of weird, shouldn't the NetStream dispatch the event? how do I know which NetStream has been closed if I have more than one running (which I do)? I need to know so I can cleanup the now dead stream.
I'm using URLStream to download 30-80mb files over HTTP. It downloads fine on Windows XP, but is extremely laggy in OSX. Anyone had similar issues? Here's some snippets of the code.
I'm trying to open a connection to a URL that will periodically send over a JSON object. I know that I need to use URLStream and some event callbacks, but I'm in the dark when it comes to knowing how streams of data "work," or the general flow of operations. Assume I know how to open the connection and send the correct request headers. First, some relevant code:
I am trying to upload and download a file from the server. After uploading if I Try to download the file it is not downloading. URLStream.bytes Available returns incorrect value. If I close the AIR application and try it ,it will work perfectly.. Why URLStream.bytesAvailable returns incorrect value just after uploading..
I successfully built a XML gallery; everything seems to work fine. But everytime I click on a thumbnail, I will get the following error:Error: Error #2029: This URLStream object does not have a stream opened.I researched on this error, and it seems this error involves sounds. Something about trying to load something that's already fully loaded. Therefore, I'm confused since I don't have any sound in my gallery. On top of that, the gallery works just fine but this error keeps popping up in Flash.[code]
In my AIR app,I am trying to implement a file downloader using URLStream.
public class FileDownloader { // Class to download files from the internet Function called every time data arrives[code].....
I simply create an object of the above class and passing the url and the file and call the load function. For some files I get the following error.
remotePath: http:[url].....error while writing bytes from...Error:Error #2029: This URLStream object does not have a stream opened.Which means the error is from the file stream(fileAccess) that I am using. I am unable to figure out why this could be happening. If I try to open the url http:[url]... in the browser, it opens properly. This happens randomly for some files.
I'm attempting to connect to an existing Comet-style long-poll service using an AIR app. The service expects a client to make a GET request with a Connection: Keep-Alive header. This request will remain open for long periods of time so that the server can push data through. In my app, the connection is terminated with an IOError after 30 seconds.
Is this an undocumented limitation of URLStream? A restriction on adl (I've only been running my app through adl)?
The server does not send any "keep-alive" messages to the client but, unfortunately this is not something i have control over.
Update
To test this, I've set up a stripped-down version using a little php script (linked by leggetter below) and am hitting it from a simple AIR app. I'm finding that my connections are closed after 30 seconds whether I use URLStream or URLLoader. the PHP:
<?php set_time_limit(0); sleep(40);
[Code]....
If i adjust the initial sleep time in the php script to anything over 30 seconds, the IOError event is triggered. If I lower the sleep time, but the request continues adding data past 30 seconds, the onComplete event is called, but _urlLoader.data is empty.
The only way this process completely successfully is if the entire thing is over before 30 seconds elapses.
In my case I need to be able to cancel loading as the user could possibly be scrolling through alot of images and the if not canceled it can take a few minutes to catch up to the scroll position.So after research the URLStream class seems to cure this problem and I found a good streaming class hereThis class works very nice except when there is heavy load on the server causing lag.When this lag happens the class will dispatch the complete event yet the image will not show.Watching the download with HTTPFox shows the image in fact does get loaded.
I assume there is some kind of delayed issue with the URLStream class and the author of this class tried to correct it using the setTimeout method. I also tried delaying the dispatching of the complete event using a timer and not dispatching until if( this.width != 0 ) was detected and this seemed to work much better.But it is still haunting me just not as often.
Is anyone else aware of the fact that Internet Explorer (at least version 8) keeps downloading a file even if the close() method is called on an URLStream instance? Heck, it even keeps downloading if you close the tab displaying the site which called the load()/close() methods on an URLStream instance. Does anyone know of a solution to overcome this problem? More details: My preloader is loading a dozen of files and immediately closing the download streams with the purpose of checking each resource's file size. In Mozilla Firefox all goes well, exactly as expected, but Internet Explorer keeps downloading the resource even if the stream has been interrupted by the action script close() method.
I successfully built a XML gallery; everything seems to work fine. But everytime I click on a thumbnail, I will get the following error:
Error: Error #2029: This URLStream object does not have a stream opened.
I researched on this error, and it seems this error involves sounds. Something about trying to load something that's already fully loaded. Therefore, I'm confused since I don't have any sound in my gallery. On top of that, the gallery works just fine but this error keeps popping up in Flash. Does anyone have information about this error and how to resolve this?
I'm writing a Comet-like app using Flex on the client and my own hand-written server.
I need to be able to send short bursts of data from the client at quite a high frequency (e.g. of the order of 10ms between sends).
I also need the server to push short bursts of data at a similarly high frequency.
I'm using NetConnection.call() to send the data to the server, and URLStream (with chunked encoding) to push the data from the server to the client.
What I've found is that the data isn't being sent/received as soon as it's available. For example, in IE, it seems the data is sent every 200ms rather than as soon as NetConnection.call() is called. Similarly, URLStream isn't making the data available as soon as the server is sending it.
Judging by the difference in behaviour between the browsers, it seems as though the Flash Player (version 10) is relying on the host browser to do all the comms. Can anyone confirm this? Update: This is very likely as only the host browser would know about the proxy settings that might be set.
I've tried using the Socket class and there's no problem with speed there: it works perfectly. However, I'd like to be able to use HTTP-based (port 80) connections so that my app can run in heavily fire-walled environments (I tried using a Socket over port 80, but that has its problems).
Incidentally, all development/testing has been done on an internal LAN, so bandwidth/latency is not an issue.
Update: The data being sent/received is in small packets and doesn't need to be in any particular format. For example, I might need to send a short array of Numbers, and this could either be encoded in AMF (e.g. via NetConnection.call()) or could be put into GET parameters (e.g. using sendToURL()). The main point of my question is really to see whether anyone else has experienced the same problem in calling NetConnection/URLStream frequently, and whether there is a workaround (it's also possible that the fault lies with my server code of course, rather than Flash).
This is absolutely driving me crazy. While I'm a fan of the availability of asynchronous calls in AIR, I'm finding that being forced to use them for something that should be SUPER simple is a severe limitation. So severe that I may end up abandoning AIR and writing native Android and iOS apps instead of using the shared AIR platform.
OK, now that I have that off my chest, here's what I'm trying to accomplish. I have an app that, when deployed, is relatively small. But once deployed to a user's device that user will log in using a login name/password. Once they log in, content specific to that user needs to be downloaded and saved to the local device. Since the content varies by user I can't include it in the package for deployment.
But I cannot figure out how to accomplish this: say I want to download 10 files and each file is 2-3mb and I want to show a "Downloading, please wait..." view during the download. The application cannot proceed until all 10 files are downloaded. But since from what I've seen URLStream and URLLoader are both async I cannot figure out how to block the app from opening the "View available content" and say on the "Downloading, please wait..." view.