Actionscript 3 :: Image - LoaderInfo COMPLETE Event Doesn't Fire After Load() And LoadBytes()?
Sep 16, 2011
I'm trying to load PNG images with ActionScript with a Loader object. This works fine for some of the images (the INIT and COMPLETE events are fired as expected), for some other it doesn't. I've read in this thread that a URLLoader might help, so I tried that, using the loadBytes() function afterwards. Still doesn't work: the URLLoader fires the COMPLETE event, but the LoaderInfo object does not.I've written a sample class that demonstrates the problem with two files (one working, the other one not).
public class LoaderTest extends MovieClip {
var output:TextField;
var loader:Loader;[code].....
All images were generated with the PHP GD library and I'm compiling with SWFTools's as3compile.The two images map_in_big.png and map_us_big.png are in the same folder (not allowed to post more hyperlinks).
set some filters on the bitmap after it has been loaded.During development (Debug mode), everything worked and the even has been fired just fine.But now I switched to Release mode and the complete event doesn't fire anymore.To load the image, I set the source property of the image to an URL that points to a PNG image. That does still work in release mode, so the image appears correctly.It's just that the "complete" event doesn't fire, no matter what I try.
I'm using this.loaderInfo.addEventListener(Event.COMPLETE to call a function when the flashVars are available as many tutorials/examples suggest. Is it correct to use it in the root of the main swf? The event is often not firing in firefox.
Here's the test code. Am I doing something wrong?
Code:
import flash.display.Loader; import flash.events.Event; var flashVars=new Object();
I'm an experienced AS developer, but this is something very basic about flex that I can't figure out. In the class below, I'm not sure why the function imageLoaded would not be executed when the image loads a url. Is there a race condition happening here? The application is completely loaded by the time this object is created and setPicture is called. How can I get the Event.COMPLETE event to fire properly in this case?The line and Log.info functions are conveniences for me, and they definitely work. Here's my MXML definition:
I want to dynamically load several png images from 6K to 2,5M. I create the loaders in a for loop and start them all at the same time, and listen Progress, Complete, IOError and SecurityError on each loader. The problem is the COMPLETE events are not always fired, even if Progress events show all images are fully downloaded.
I tested with Firefox and Chrome, I load 4 images 2.5M, 2M, 1M, and 6K, then I just get 2 or 3 COMPLETE events, sometimes the 4 are fired with Chrome. Did not find any workaround. I tried to listen ProgressEvent and call the completeHandler when bytesLoaded == bytesTotal but the loaderInfo.content is null (and bytesAvailable =0) so I can't get the Bitmap.
1) Is there a known limitation in the number of simultaneous loaders, from flash player or browsers ? Does Adobe recommend to have queued loaders instead of simultaneous ?
2) Is there a way to get the loaded Bitmap when COMPLETE is not fired ?
3) I don't keep the loaders in a property of my class, and use weakReference for the listeners : the issue can come from my code ? (but the ProgressEvents are received until the download is complete)
I've got a file upload that's working just fine except for the fact that the Event.COMPLETE event seems to take way longer than it should to fire. The Progress event is firing just fine and filling up the progress bar, and on top of that the entire file arrives on the server just fine, and way before the complete event fires. I've read I need to echo something back from the server, but I have no idea what that should be.
I am working with Flash CS 4 with AS 3.0. I use the following code to hook into Loading complete for mystage:this.loaderInfo.addEventListener(Event.COMPLETE, loaderComplete);The code works properly in IE 8.0 (Windows 7) and Chrome. I have Flash Player 10 installed and the movie is targeted for Flash Player 9. The movies are showing a random behavior on FireFox 3.5.3.The website is under construction. The top bar contains 7 small & 1 big flash movie. View the page first in IE or Chrome. Then see it in FF. The labels from the flashvars are not being picked up properly. The load Complete function is not working properly.
As you see from the code above I have a loop that loads images on each pass using the same loader. This works, however, it is looping too quick (I believe) and as such the "addBook" function that handles pushing these into an array is pushing them into the array in the wrong order. Two questions: (1) Am I approaching this incorrectly? (2) If not, is there a way to listen to the loader event so the loop proceeds only after the load of that image is complete?
I have no experience with Object Oriented Programming, so I wonder about the following:
1) Will the code past the .LOAD line (in red) be executed only after the image completes loading? 2) Can I nest several listeners as seeing in my code below?
The purpose of this is too allow a user to upload an image from their machine to be displayed on a website. The code's pretty straight forward and i have it all working fine, but have come across an issue. When certain portrait images are selected to be loaded and displayed, they get rotated at some point in the process and become landscape? There doesn't appear to be any consistency to the way they are rotated. Some are clockwise, some counter clockwise.
The one thing i've noticed though, is that it doesn't appear to be an issue with images that have been re-saved (so simply taken into photoshop and then saved without any modification), only images that are the original source of an image taken by a digital camera? This has got me wondering whether there's a possible issue with flash reading the meta data of the source image? The attached zip file contains the source code and swf, a selection of images from 2 different camera's and a modified image.
Just to note, due to the dimensions of the images, in the source code the bitmap is scaled to 0.1 so that the result can be clearly seen. I've tested this without the scaling and the image still gets rotated. There's a trace in the Event.COMPLETE handler of the Loader.loadbytes() method and you can see from this that the width and height of the loaded image have been switched? Note - due to the size of the zip file (4.6MB) because of the images, i've put them up on my server for download instead.[URL]
I use movie clip as a button. Inside movie clip there are two movie clip, each one for a separated condition. On mouse over it goes on white one.On mouse out it returns on blue one.If it is pressed it stays white.Mouse out doesn't fire every time. It is placed on the white movie clip. It fires in 90 percent.Movie clip contains shape and two images inside.
I have some MovieClips with mouse linteners, but if I mouse out of a movieclip instantly on to another one the 2nd movieclips MOVE_OVER event doesn't fire. Is there a work arround for this? If you don't know what i'm talking about the flash can be found here [URL] Try mousing from one movieclip to another without hitting the background and the tooltip wont show up. I was thinking of finding the movieclip i'm over by looking at the x and y position of the mouse and comparing that to the x y and z of all the movieclips but i'm hoping theres an easier way.
I got this very strange behavior from FlashPlayer debugger 10.1 r82. When I call loader.load method, no ADDED event is dispatched to the loader object. But if I open the file and call loader.loadBytes instead, an ADDED event is dispatched to the loader object. I suspect the ADDED event is dispatched because the content is being set as the child of Loader object, but why in the other case it is not dispatched?
I've got a canvas within which I have a list. The renderer for this list calls upon a "Text" field, with the "link" element of this field set to a function. The "htmlText" of the field is set dynamically to a mixture of words and links. Basically the function checks to see which tag within the htmlText has been clicked and performs an event accordingly.However, you have to click the link twice for anything to happen. Whilst debugging the code I noticed that the function referenced by the "link" element isn't actually even called until the 2nd click.
Within my application I'm using a Scroller component. I can't seem to figure out which event I should set up a listener on in order to know when content is scrolled. I tried Event.CHANGE on Scroller.verticalScrollBar property but apparently that event doesn't fire when the user scrolls with a mouse wheel or arrow keys.
I've written a class that will load multiple SWFs and then call a passed function when complete. My problem is that when all the movies have downloaded the passed function won't fire.
[AS] // LoadChecker // this class is passed am array and calls a function when all of the objects in the array are loaded //
I have made my application in CS4 using as3.0. In my application there is one browse btn that upload image/picture on my application. It upload the image on Event.Complete event. This thing work in window's OS perfectly but in Mac it open a window on the click of browse but wont upload the image in my application.
Certainly it is not the best practice, but I need to load a file and get its contents within the same function call. That is calling the urlLoader.load function and then waiting (say with an while(true)) for the contents to load.
I am stuck with the fact that flash will not trigger events nor continue with the file loading until the current thread finishes. Is there any way to allow flash to make the file contents available without exiting the current method call.
On a side note, I know this is not a good thing to do. This is only for easing a process in a local environment in which I need the file contents without waiting for an event. If I let the process continue other events already queued will fire and becomes a mess. Sadly refactoring the code to wait altogether would be too much effort.
i like to ask about one thing If i create Loader and load external image by URLRequest , ill have result :
loader.content is Bitmap loader.content.bitmapData is BitmapData But if I use Loader.loadBytes(ImageBytes) , result is different even if ImageBytes is loader.contentLoaderInfo.bytes :
bytesLoader.content is MovieClip bytesLoader.content.getChildAt(0) is BitmapData bytesLoader.content.getChildAt(0).bitmapData is BitmapData
Is it possible to load a swf file in bytes through loadbytes method? Instead of giving the URL(URLRequest = "sample.swf"); i want to load through bytes.
I use attachMovie() to create a new instance of a movieclip, then I use loadMovie() to load an external PNG image into the new movieclip. That is working fine.
I want to be able to detect when the image has finished loading into the movie clip container. I need to detect this because I want to check the image width and height.
If I check the width and height right after I call loadMovie() it is returning the default placeholder size, instead of the new loaded image size. It obviously has not finished loading when I check it there.
I use attachMovie() to create a new instance of a movieclip, then I use loadMovie() to load an external PNG image into the new movieclip. That is working fine.I want to be able to detect when the image has finished loading into the movie clip container. I need to detect this because I want to check the image width and height.If I check the width and height right after I call loadMovie() it is returning the default placeholder size, instead of the new loaded image size. It obviously has not finished loading when I check it there.I am using ActionScript 2.0 but I can use 3.0.
I use attachMovie() to create a new instance of a movieclip, then I use loadMovie() to load an external PNG image into the new movieclip. That is working fine.
I want to be able to detect when the image has finished loading into the movie clip container. I need to detect this because I want to check the image width and height.
If I check the width and height right after I call loadMovie() it is returning the default placeholder size, instead of the new loaded image size. It obviously has not finished loading when I check it there.
I made a test where I download a file using URLLoader - something like this:
[Code]....
in the middle of the downloading process I physically disconnect the internet connection. the download stalls - but after aproximately 30 seconds downloadSuccessful is invoked, although only half of the data was downloaded. how can I make sure that the data to be downloaded is complete and correct?
I am loading in binary files with the url class which can be quite large 10mb + and it works fine on my server but another server I am testing on it can sometimes not work. Sometimes it will not load the file and other times it will only load about 20% and it throw a complete event??? Then of course other times it works fine. This server is https maybe that has something to do this it?
how can I load in flex spark Image control and wait for complete loading? MX:image have method load() and listen COMPLETE event this is not in spark Image...is there only source?? or how can i listen when image is complete loading??
I have an application that I'm migrating from flex 3 to flex 4.5. In this application, there is some mx Image components that load a simple swf file (image). Spark image doesn't load swf files, so I was wondering, should I keep the mx Image, or should I change it to SWFLoader? Is there any advantages to using one or the other?
if I have an event listerner (mouse, keyboard, enterframe,....event) that is being triggered, and when it finishes its event, something that is able to detect the finished event listener and fire out another sets of event.
It works more like MOTION_FINISH in TweenEvent, but it is only available for TweenEvent only, what if I want to detect a mousclick, keyboard, enterframe or even touch event?
1. swf should play if client open it at his end (this will be detected by checking a text file which has variable on the local drive say "C") swf should preload if finds flashvars from HTML file on server by user 3. if both of the above conditions dosent work then swf should not play
I have succeeded some what in this. if i run the file without preloader it work fine. but when i add preloader to it something goes wrong.