arthur-debert / bulkloader Goto Github PK
View Code? Open in Web Editor NEWA bulk loading library for Actionscript.
Home Page: http://www.stimuli.com.br/trane/2007/nov/25/loading-reloaded/
A bulk loading library for Actionscript.
Home Page: http://www.stimuli.com.br/trane/2007/nov/25/loading-reloaded/
If, when loading videos, you set the pausedAtStart property to true, metadata information is lost. This is a very weird bug on flash's API. If you call netStream.seek(0) before the metadata info is triggered, it will be lost forever. This was fixed in revision 92.
What steps will reproduce the problem? When you load a wav sound, the file is not cast in sound classe. What version of the product are you using? On what operating system? I use flex 3 beta 3 and i use Windows XP Please provide any additional information below. For solve the problem, i add wav into SOUNDS_TYPE in BulKLoader, but its normal ?
Hallo I am having a strange problem with the Bulk Loader. Here are the steps that i go through when loding the assets that I need. ////////// 1 /////////// //create instance of bulk loader and add all //button graphics and first teaser graphic private function loadAssets():void{ _bulkLoader = new BulkLoader("startteaser"); _bulkLoader.logLevel = BulkLoader.LOG_INFO; ``` for each (var i:XML in _configXML.card){ var closedGraphicID:String = String(i.closedGraphic.attribute("src")); _bulkLoader.add(closedGraphicID); } var firstTeaserID:String = ``` String(_configXML.card[0].child("openGraphic").attribute("src")); var firstTeaserType:String = firstTeaserID.substr(firstTeaserID.length - 3, 3); _bulkLoader.add(firstTeaserID); ``` _bulkLoader.addEventListener(BulkLoader.PROGRESS, onStartupItemsProgress); _bulkLoader.addEventListener(BulkLoader.COMPLETE, startupItemsLoaded); _bulkLoader.start(); ``` } ////////// 2 /////////// //start loading of all other teasers and start film private function startupItemsLoaded($e:BulkProgressEvent) : void{ _bulkLoader.removeEventListener(BulkLoader.PROGRESS, onStartupItemsProgress); _bulkLoader.removeEventListener(BulkLoader.COMPLETE, startupItemsLoaded); ``` for(var i:Number = 0; i < _configXML.card.length(); i++){ var openGraphicID:String = ``` String(_configXML.card[i].child("openGraphic").attribute("src")); _bulkLoader.add(openGraphicID); ``` } _bulkLoader.start(); _layoutManager = new LayoutManager(_configXML); ``` } ////////// 1 /////////// //check to see if teaser is already loaded //if so draw teaser if not show loading public function Teaser($teaserXML:XML, $totalCards:Number) { _bulkLoader = BulkLoader.getLoader("startteaser"); ``` if(_bulkLoader.hasItem(_teaserID) != false){ draw(); }else{ showLoadBar(); } ``` } What steps will reproduce the problem? 1. Click any link in the flash teaser area 2. Return to the page with the back button in IE7 (this does not hapen on all computers) What is the expected output? All teaers should load. What do you see instead? For the 3 teasers that are loaded with in a second batch. TypeError: Error #1034: Type change Failed: flash.events::Event@3c4d581 kann nicht in br.com.stimuli.loading.BulkProgressEvent umgewandelt werden. at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at br.com.stimuli.loading.loadingtypes::LoadingItem/onCompleteHandler() at br.com.stimuli.loading.loadingtypes::ImageItem/onCompleteHandler() What version of the product are you using? On what operating system? Buld Loader 1.9.6, XP IE7
Hi, I just ran into a problem where I needed to access the applicationDomain of an swf I loaded through BulkLoader (to attach clips from it's library as described at http://darylteo.com/blog/2007/11/16/abstracting-assets-from-actionscript-in-as30-asset-libraries/ ). I couldn't see a built in way to do it so I made the change as shown in the attached patch. Not sure if it's necessarily the best way but it would be nice if this parameter was somehow exposed (or maybe even the whole contentLoaderInfo object would make more sense?). Cheers, Kelvin :)
more info here: http://groups.google.com/group/bulkloader-users/browse_frm/thread/536e9dc70b55aa0f?hl=en
Hi Arthur, i don't sure whether this would help you, but i stumbled upon the following problem when using BulkLoader: I load bulk images in my flash project. These images are loaded not directly, but through php script (in order to disable direct access to these images and grant it only to authenticated users). But sometimes a requested image may not exist. In this case script returns 'ret=notexists' and i check it in flash to figure out is this image or not. But when i'm trying to load these images through BulkLoader, guessTypes returns 'text' (because of .php extension) and then URLItem returns the data as String and it is much harder to convert it in ByteArray and then in BitmapData. But if i set type="image", loading doesn't go because of some images aren't images at all (just text 'ret=...'). I see the two solutions to this problem: 1. Is to read Content-Type returned from server request and then change type of URLItem on ImageItem for example. 2. Is to receive data as ByteArray and then convert it to String or whatever you want. This method i actually use now. It solves in one line of code: in URLItem, line:24, i added: loader.dataFormat = URLLoaderDataFormat.BINARY; Then i need to convert ByteArray to BitmapData off course, but it's not a problem. Regards, Anton
It would be great, if it would be possible, to get a list with all registered IDs.
Hi Debert. Loading starts when "add method" is called because current state and "IsPaused" are "false". I wonder "_ isPaused" property of BulkLoader whether have to be default and to be "true". or I think that it should be able to specify it by the argument of "Bulkloader contrutor". I'm sorry in sentences not transmitted easily. I would appreciate it if you could check my opinion.
Wouldn't it be nice to have a visible application domain in LoadingItem, when this is an swf. Im sort of building it in right now, but might be handy in general.
What steps will reproduce the problem? 1. create 2 swfs with a bulkloader that will load an xml doc 2. name the bulkloader in each swf the same id 3. create a third swf that will use bulkloader to load the first two swfs 4. test the clip What is the expected output? What do you see instead? I am creating a 2 - 3 level carousel stack. And I have already built a carousel swf, so I expect to be able to load the same swf with different images. I can load a single instance fine, but I can not load two, and I get the following output: All loaders [BulkLoader] name:carLoader, itemsTotal: 2, itemsLoaded: 0 [BulkLoader] name:mainXMLoader, itemsTotal: 1, itemsLoaded: 0 [BulkLoader] name:picLoader, itemsTotal: 0, itemsLoaded: 0 # [BulkLoader] name:shellLoader, itemsTotal: 0, itemsLoaded: 0 Error: BulkLoader with name'mainXMLoader' has already been created. at br.com.stimuli.loading::BulkLoader() at mixandmatch_bottoms_fla::MainTimeline/frame1() What version of the product are you using? On what operating system? bulkloader_rev_196 Mac OSX Flash CS3 AS3 Please provide any additional information below. Is there a way to isolate the swfs so that the loaders carryout, or can a local connection be worked in to take a single swf and pass a variable to determine the content?
Hello! This BulkLoader? is Awesome.... Im having trouble with one thing. I am trying to create multiple BulkLoaders? and not getting very far. I keep getting an error that says that it already exists. here is an example of what i am trying to do. note: the second BulkLoader? is inside the main.swf that is being loaded up by the first BulkLoader?. //////BuilkLoader? Main////////// var mainLoader:BulkLoader? = new BulkLoader? ("mainLoader"); mainLoader.add("welcome.flv", {pausedAtStart:"true"}); mainLoader.add("main.swf"); mainLoader.addEventListener(BulkLoader?.COMPLETE, onCompleteHandler); mainLoader.addEventListener(BulkLoader?.PROGRESS, onProgressbar); mainLoader.start(); //////BuilkLoader? Main////////// var subLoader:BulkLoader? = new BulkLoader?("subLoader"); subLoader.add("welcome.flv", {pausedAtStart:"true"}); subLoader.add("main.swf"); subLoader.addEventListener(BulkLoader?.COMPLETE, onCompleteHandler); subLoader.addEventListener(BulkLoader?.PROGRESS, onProgressbar); subLoader.start(); //////////////////////////////////////////// bilk-loader_rev_65_0.9.1
When we load some XML from dynamically constructed URL, I think it could be useful to be able to "forget" this URL and specify another key for LoadingItem, perhaps in add() props parameter. Going along these lines, adding another LoadingItem with same key should then replace any previously loaded item.
What steps will reproduce the problem? 1. Go to http://code.google.com/p/bulk-loader/wiki/CustomizingLogging 2. Under 'Specifying Log Levels' there is the example line: var loader : BulkLoader = new BulkLoader("main", 5, BulkLoader.LOG_ERROR) 1. It should have BulkLoader.LOG_ERRORS at the end not BulkLoader.LOG_ERROR
Firstly thanks. BulkLoader is fantastic. There is one problem I have run into which would be caused by the following situation: 1/ I load image gallery 1 and push all the imageURLS to my BulkLoader. 2/ I open image gallery 2 (before all of image gallery 1's images are loaded) and push all the image URLs to my BulkLoader. I need some kind of var tracking what the current highest priority is so that if necessary I can guarantee newer items added to a loader are going to have the highest priority. If all calls to load came from the same class I could put the counter there, but what if they are coming from different classes? How can I guarantee to prioritise added items. A simple loader.highestPriority which increments a counter every time it is called would solve the problem. Thanks.
numConnections appears to be 0 based. As a result setting bulkLoaderInstance.numConnections = 1; causes items to load two at a time.
The event fired when all items are loaded is fired before the event COMPLETE for the last item to load. Reported by Jens Franke.
FDT can't parse the LoadingItem file. Reported br Jens Franke. Jen, this is definitely an issue with FDT. Since I don't use it, it's hard for me to get his fixed. This seems to be a bug with their parser. That line is using a untyped variable returned type and this might just be the issue. I've been testing this with the CS3 compiler and the Flex Compiler without a glitch, so it's probably something on their end.
After i add a few .swf to be loaded, they won't enter on this if. - if (loaded.isSWF()) {...} ///loaded is a LoadingItem but, this if works perfectly: - if (loaded.content is MovieClip) {...} What version of the product are you using? On what operating system? i checked out the svn today (march, 5th) at 13:00. Windows Vista.
ello, Just noticed that the priority of a LoadingItem is publicly read/writeable, although when the priority of a LoadingItem is updated the load-order won't be re-sorted until the next call to BulkLoader.add() In my application, I'm using "pre-caching" to load stuff in the background, but then if the user navigates in a certain way and particular items are required immediately then I'll want those items to have increased priority. I've handled it manually, using a real hack // simplified... myItem.priority = newPriority; myLoader["_items"].sortOn (blah blah blah) This isn't a bug, of course, and I'm sure you didn't intend LoadingItems to have their priorities amended, but perhaps when a priority is updated it could trigger a re-sort, or a public method in BulkLoader could be provided to force the queue to be resorted. Anyway, absolutely loving the package - it's incredibly helpful. Thank you. Toby
What steps will reproduce the problem? 1. Load a PNG image using bulk-loader with an url that does not end with .png e.g. http://kr.htile.maps.yahoo.com/tile? locale=kr&v=3.66&t=h&x=3495&y=461&z=6 2. Using getBitmapData function does not return the expected image What is the expected output? What do you see instead? The URL above should be treated as an image. What version of the product are you using? On what operating system? RC1 (rev169) Please provide any additional information below. 1) First I tried to use BulkLoader.registerNewType but it seems that it always returns false and does not register the correct extension with a given type. objects = options[atType]; always returns null by the way. (At least in Flex 3) 2) I didn't look at the source code thoroughly so I dunno if it's already doing this.. but anyhow I think bulk-loader should first check the mime- type and than.. perhaps the file extension to guess what type of loading mechanism to use... 3) For now, I just added "com/tile" to BulkLoader.as... internal static var LOADER_TYPES : Array = ["swf", "jpg", "jpeg", "gif", "png" , "image", "com/tile"];
In the method named registerNewType. > if (!Boolean(withClass) || !(withClass is LoadingItem)){ > throw new Error("[BulkLoader]: When adding a new type and extension, you must determine which class to use"); > } `is` operator is able to check instance only. Because everytime we're caught an exception. should be flash.utils.describeType instead. thanks and sorry in strange English :-)
Hi Debert. I published some swf file. some file's document-class is MovieClip, It's ok. but, some file's document-class is Sprite, there're always received "Bad cast" error on `getMovieClip`. If isSWF() returns true when *.swf is loaded, it should be to pass Sprite. Don't you think so? I'm sorry in strange English :-(
I set up a library project in flex to build the swc and XMLItem was missing import br.com.stimuli.loading.BulkErrorEvent; Once I added it I can compile. After flex did its organize imports work my imports look like this: import br.com.stimuli.loading.BulkErrorEvent; import br.com.stimuli.loading.BulkLoader; import flash.display._; import flash.events._; import flash.net._; import flash.utils._;
My code is simply this: //--------------------------------------------------- import br.com.stimuli.loading.BulkLoader; import br.com.stimuli.loading.BulkProgressEvent; var loader:BulkLoader = new BulkLoader("main", 1, BulkLoader.LOG_VERBOSE); loader.add("http://team08.net/loader_testing/01.mp3", {id:'1'}); loader.add("http://team08.net/loader_testing/02.mp3", {id:'2'}); loader.start(); //--------------------------------------------------- When looking at the debug output it shows that both files get started, rather then one starting and the other waiting till the first finishes. What version of the product are you using? On what operating system? I'm using bulkloader_rev175 on OS X 10.5 with Flash 9.0 To remedy the issue I edited line 778 in BulkLoader.as and changed it from: if(_connections.length <= numConnections){ to: if(_connections.length < numConnections){ So far it hasn't caused any issues. Is there some greater issue that I haven't yet discovered? What was the reasoning behind '<=' and not '='? These are the questions I submit to you... And thanks for the awesome loader library!
BulkLoader.as line365 bynari: BinaryItem It seems to typo :-P
What steps will reproduce the problem? 1. import bulkLoader class 2. create new bulk loader 3. add file - bulkLoader.add("as2swf.swf") 4. setup event listeners 5. start bulkLoader 6. when complete try to get as2 swf asset What is the expected output? What do you see instead? Loaded 0 of 8089 Loaded 8089 of 8089 Loaded 8089 of 8089 [BulkLoader] Failed to get content with url: 'as2swf.swf'as type: [class MovieClip] What version of the product are you using? On what operating system? bulk-loader_rev_83_0.9.2.2 Windows XP SP2 Please provide any additional information below. To be sure it was not the file, I have tried this with multiple files and same error. I can successfully load the files using a generic load with flash such as: imageLoader = new Loader() imageLoader.load(new URLRequest(value)) Otherwise an amazing product. Thanks
When you add multiple load tasks with the same url they will all be added as a new task instead of returning the first one as it intended in the code. The reason is that URLRequest is used as the key, but the LoadItem's internal URLRequest object gets always compared to a new URLRequest which will never result in a match. What has to be done is the compare the urls of those two URLRequests. I have changed the get() function a bit ( splitting up the String and the URLRequest comparisons to have the whole thing a bit cleaner): old: public function get(key : *) : LoadingItem{ if(!key) return null; for each (var item : LoadingItem in _items){ if(item._id == key || item.url.url == key || item.url == key ){ return item; } } return null; } new: public function get(key : *) : LoadingItem{ if(!key) return null; var item : LoadingItem; ``` if ( key is URLRequest ) { for each ( item in _items) { if( item.url.url == URLRequest(key).url ){ return item; } } } else { for each ( item in _items) { if(item._id == String( key ) || String(item.url.url) == ``` String( key ) ){ return item; } } } return null; }
What steps will reproduce the problem? 1. Load items into a BulkLoader 2. Use removeAll to reset the BulkLoader 3. Reload items into the BulkLoader 4. Use whichLoaderHasItem to find an item 5. The returned BulkLoader will be null because removeAll deleted the loader name from _allLoaders and is not searched What is the expected output? What do you see instead? Maybe there should be an additional removeLoader method that would perform removeAll plus deleting the name from _allLoaders. removeAll should just remove all loader items and not touch the loader, i.e. removeAll should not delete the loader name? What version of the product are you using? On what operating system? BulkLoader.as r187 (br.com.stimuli.loading.BulkLoader.as) Please provide any additional information below. I came across then when "recycling" BulkLoader's.
What steps will reproduce the problem? 1. create Loader with COMPLETE event listener 2. inside the COMPLETE event listening method loader.isFinished will always return false. This may cause problems if you create objects which check for the loader state What is the expected output? What do you see instead? isFinished should be true when COMPLETE event is dispatched. In my case I changed the Bulkloader. onAllLoaded method to the following private function onAllLoaded() : void { if(_isFinished){ return; } var eComplete : BulkProgressEvent = new BulkProgressEvent(COMPLETE); eComplete.setInfo(bytesLoaded, bytesTotal, bytesTotalCurrent, _itemsLoaded, itemsTotal, weightPercent); var eProgress : BulkProgressEvent = new BulkProgressEvent(PROGRESS); eProgress.setInfo(bytesLoaded, bytesTotal, bytesTotalCurrent, _itemsLoaded, itemsTotal, weightPercent); ``` isRunning = false; endTime = getTimer(); totalTime = BulkLoader.truncateNumber((endTime - startTime) /1000); updateStats(); _connections = null; traceStats(); _isFinished = true; log("Finished all", LOG_INFO); dispatchEvent(eProgress); dispatchEvent(eComplete); ``` }
BulkLoader.loadNow isn't currently pausing the item removed from the connections as the documentation says it should. It appears that line 689 should be pause(itemToRemove) rather than _removeFromConnections(itemToRemove); replacing it solved the problem for me.
Just a couple of things I've had to add to VideoItem myself on my current project that seem like they should be standard: 1. Getter for canBeginStreaming. Pretty straightforward, looks like it could be an intended feature and was just missed. 2. Ability to change the error margin for calculating when READY_TO_PLAY event should be fired. Static class variable would be fine for my purposes, don't know if anyone would ever want to alter it on a case-by-case basis. Other than that, excellent utility; thanks.
What steps will reproduce the problem? 1. add a flv to Bulk loader 2. wait for it to come 3. use getNetStream method 4. attach the stream to a video 5. try to play it What is the expected output? What do you see instead? i expect a "NetStream.Play.Start" status event to come to do some sync. But it never comes. I guess it called in the preload, but i expect the preloaded items to perform the usual operations when i get them. Maybe you can dispatch it manually?
What steps will reproduce the problem? 1. Add one item to the queue. 2. Add a listener for BulkLoader.COMPLETE 3. Start the queue. 4. In the listener add a new item to the queue. What is the expected output? What do you see instead? Expect the item to be added to the queue and nothing more to happen since the queue has stopped at this point. Instead, an error is thrown in the onItemComplete function. This function shouldn't really be triggered in this case. However, the attached file works around the issue rather than being a solid solution - I'm busy working on something else and had to make this "just work", so there is probably a better way. What version of the product are you using? On what operating system? Latest from SVN, compiling with mxmlc from FDT on windows. Please provide any additional information below. ...
What steps will reproduce the problem? 1. create loader, add flv 2. add listeners, create netstream object 3. once loading begins and NS object is there, and finally the goal, remove your flv LoadingItem.. What is the expected output? What do you see instead? I had assumed this would have closed the netstream? and stopped all loading- but based on my tests the netstream continues to load-
It seems to typo.
_canBeginStreaming should be set to false when the stream is closed in VideoItem.stop, otherwise the event will not be fired when the stream is opened again.
I made some changes on the code to be deploy with flex sdk code using lightweight on bulkloader semanthic. Also it´s attached an example of that with some minor bugfixes adapted to Flex enviroment.
I haven't been able to produce a test case where it always occurs, but VideoItem is sometimes dispatching the CAN_BEGIN_PLAYING before it should - almost as soon as the stream starts downloading in fact. I assume this is due to responseTime being set a little while after the download has actually begun and thus giving an incorrect result for the currentSpeed calculation in VideoItem.createNetStreamEvent. I've found that only performing the check if timeElapsed > 100 seems to solve the problem, but feel it's a bit arbitrary and that there should be a better solution; perhaps delaying the test for a frame.
What steps will reproduce the problem? loader.add( item.src, {id: item.image, priority: priority, context: loaderContex} ); loader.get( item.image ).addEventListener (SecurityErrorEvent.SECURITY_ERROR, onSecurityError); What is the expected output? What do you see instead? Expepected is, if item.src is on another domain and crossdomain.xml on this domain does not exist, that onSecurityError will be executed. Instead flash throws an uncatched error. What version of the product are you using? On what operating system? bulkloader_rev_196 Please provide any additional information below.
What steps will reproduce the problem? 1. Load a group of files. 2. On the BulkLoader.COMPLETE listener, add more items and call start() What is the expected output? What do you see instead? The items will be downloaded, but the BulkLoader.COMPLETE event will not work because _isFinished is true, so it quits on the first 'if' of onAllLoaded(). What version of the product are you using? On what operating system? I'm using the bulk-loader_rev_100_0.9.3 on windows + Flash CS3. Please provide any additional information below. the correction is very simple. Move: dispatchEvent(eProgress); dispatchEvent(eComplete); after the _isFinished=true; line. on add() it sets _isFinished=false; But, if the event is dispatched before the _isFinished = true; on onAllLoaded() it becomes true again after you added the items.
//--------------------------------------------------
stop();
import br.com.stimuli.loading.BulkLoader;
import br.com.stimuli.loading.BulkProgressEvent;
var loader = new BulkLoader("K");
var postRequest = new URLRequest("http://domain.com/api/");
postRequest.method = "POST";
var postData = new URLVariables();
postData.var1 = "1";
postData.var2 = "2";
postRequest.data = postData;
loader.add(postRequest, {"id":"A","type":"xml"});
postData = new URLVariables();
postData.var1 = "3";
postData.var2 = "4";
postRequest.data = postData;
loader.add(postRequest, {"id":"B","type":"xml"});
postData = new URLVariables();
postData.var1 = "5";
postData.var2 = "6";
postRequest.data = postData;
loader.add(postRequest, {"id":"C","type":"xml"});
loader.addEventListener(BulkLoader.COMPLETE, onAllLoaded);
loader.start();
function onAllLoaded(e:Event):void {
trace(e.target);
trace(loader.getXML("A"));
trace(loader.getXML("B"));
trace(loader.getXML("C"));
}
//--------------------------------------------------
3 different sets of results. 3 sets of results of the same content - result
from the last added XML
bulk-loader rev 196 & rev 202, Flash CS3 IDE, timeline code
worked on rev 175
Original link: http://code.google.com/p/bulk-loader/issues/detail?id=33
What steps will reproduce the problem? 1. hook up a BulkLoader with en error listener like this: loader.addEventListener(BulkLoader.ERROR, onError); 2. load a faulty xml document, ie: <head>faulty end tag<head> What is the expected output? What do you see instead? I expect onError to be triggered so I can handle this xml error gracefully, Instead I get this exception thrown that I cannot catch: TypeError: Error #1085: The element type "head" must be terminated by the matching end-tag "</head>". at br.com.stimuli.loading.loadingtypes::XMLItem/onCompleteHandler() at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/flash.net:URLLoader::onComplete() What version of the product are you using? On what operating system? bulkloader_rev_196 Windows XP Please provide any additional information below. One workaround is to load the xml as text and parse it manually
There seems to be a slight typo in your wiki/docs: On the "HowToUseEvents" page in your Wiki under the heading of "Complete", you currently have: bulkInstance.add("background.jpg"); background.addEventListener(BulkLoader.COMPLETE, onAllLoaded); when I believe you mean: bulkInstance.add("background.jpg"); bulkInstance.addEventListener(BulkLoader.COMPLETE, onAllLoaded);
What steps will reproduce the problem? ``` var loader:BulkLoader = new BulkLoader("main-site"); private function loadImages():void { for(i = 0; i < 10; i++) { loader.add("images/i"+i+".jpg"/*, ``` {id:String(i)}*/); loader.get ("images/i"+i+".jpg").addEventListener(Event.COMPLETE,imageLoaded) } ``` loader.addEventListener(BulkLoader.COMPLETE, ``` onAllLoaded); //loader.addEventListener(BulkLoader.PROGRESS, onAllProgress); loader.addEventListener(BulkLoader.ERROR, onAllError); ``` loader.start(); } private function imageLoaded(e:Event):void { //trace(e.data); //var content : * = bulkInstance.getContent ``` ("background.jpg");var bgBitmap : Bitmap = content as Bitmap;addChild (bgBitmap); trace("yo", e.target, loader.getContent (e.target.url), loader.getBitmap(e.target.url)) ``` //var theBgBitmap : Bitmap = loader.getContent ``` ("bg") as Bitmap;// you don't need to keep a reference to the loader intance, you can get it by name:var theBgBitmap : Bitmap = BulkLoader.getLoader("main-site").getContent("bg") as Bitmap;// you can also use the conviniece methods to get a typed object:var theBgBitmap : Bitmap = loader.getBitmap("bg");// grab a BitmapData directly:var theBgBitmap : Bitmap = loader.getBitmapData("bg"); } ``` private function onAllLoaded(e:BulkProgressEvent):void { for(i = 0; i < 10; i++) { trace("second try"+loader.getContent ``` ("images/i"+i+".jpg"))/_.addEventListener(Event.COMPLETE,imageLoaded)_/ } } What is the expected output? What do you see instead? yo LoadingItem url: images/i6.jpg, type:image, status: finished null null yo LoadingItem url: images/i2.jpg, type:image, status: finished null null yo LoadingItem url: images/i7.jpg, type:image, status: finished null null yo LoadingItem url: images/i3.jpg, type:image, status: finished null null yo LoadingItem url: images/i4.jpg, type:image, status: finished null null yo LoadingItem url: images/i0.jpg, type:image, status: finished [object Bitmap] [object Bitmap] yo LoadingItem url: images/i5.jpg, type:image, status: finished [object Bitmap] [object Bitmap] yo LoadingItem url: images/i1.jpg, type:image, status: finished [object Bitmap] [object Bitmap] yo LoadingItem url: images/i9.jpg, type:image, status: finished [object Bitmap] [object Bitmap] yo LoadingItem url: images/i8.jpg, type:image, status: finished [object Bitmap] [object Bitmap] second try[object Bitmap] second try[object Bitmap] second try[object Bitmap] second try[object Bitmap] second try[object Bitmap] second try[object Bitmap] second try[object Bitmap] second try[object Bitmap] second try[object Bitmap] second try[object Bitmap] What version of the product are you using? On what operating system? newest Please provide any additional information below. I need to get images as soon as they are loaded... not when everything is loaded
It would be nice to mention on the first page that this is a flex project.
What steps will reproduce the problem? 1. add an item loader.add("url.xml", {preventCache: BulkLoader.PREVENT_CACHING}) 2. try to get the item: get("url.xml") What is the expected output? What do you see instead? I would think this would still return the LoadingItem. I understand that the get() method returns a loading item, but it is not always convenient to pass that variable around. It does not return a LoadingItem because it's searching for "url.xml" but the LoadingItem is actually "url.xml?random" What version of the product are you using? On what operating system? OS X, Flash 9, Please provide any additional information below. It's really a quick fix. What I did was: ************\* BulkLoader.as ****************** public function add(url : *, props : Object= null ) : LoadingItem { props = props || {}; var originalurl:String = ""; if (url is String){ originalurl = url; url = new URLRequest(url); . . . // properties from the props argument item.originalurl = originalurl; item.preventCache = props[PREVENT_CACHING]; . . . // originalurl test added to the end as a last resort if(item._id == key || item.url.url == key || item.url == key || (key is URLRequest && item.url.url == key.url) || item.originalurl == key ){ . . . Not sure if this helps, or if it is too specific to my needs, but I figured I'd mention it. island
any of the loading items does not have an SecurityErrorEvent.SECURITY_ERROR listener.
This is simply a fix for the previous issue of "Multiple BulkLoaders?" (see http://code.google.com/p/bulk-loader/issues/detail?id=3&can=1 ) that I also ran into. I was able to look through the various classes and find the problem causing the BulkLoader to throw errors when multiple bulkloaders are used. Issue seems to be caused by a simple typo on line 46 of the LazyXMLLoader class, where it reads: var _bulkLoader : BulkLoader = new BulkLoader(String(xml.@name), numConnections, logLevel); but should read: var _bulkLoader : BulkLoader = new BulkLoader(String(xml.name), numConnections, logLevel); When @name is changed to name, the issue is solved. I am fairly new to Actionscript, but this seems like a valid issue to me. The updated LazyXMLLoader.as file is attached.
What steps will reproduce the problem? 1. add any flv to bulkloader 2. set option pausedAtStart:true 3. let bulkloader load the files > What is the expected output? What do you see instead? Bulkloader loads the entire flv without fire CAN_BEGIN_PLAYING. This event should be fired when buffer is filled so the stream could play. > What version of the product are you using? On what operating system? rev 177 (0.9.9.4) > Please provide any additional information below. There should be also an option to stop loading the steam if buffer is filled. FLV should be streamed, so there is no need to load the entire flv.
What steps will reproduce the problem? Situation: I have one 200k swf which I am preloading with BulkLoader. This swf contains 4 movieclips which were done in Illustrator (have some complex lines but it shouldn't matter). I am loading this swf from a main movie with the method described in the help file. I am using Flash IDE with AS3. The problem: When I export the swfs and test it in the browser tracing the PROGRESS event produces what is expected: loaded x of y bytes. where x starts from 0 and reaches the total number of bytes gradually in a number of steps. Hovewer when it finished loading when I add the swf to the display list I can only see one mc inside the loaded swf, sometimes none (intermittent). The weird thing is that, if now I refresh my browser and do the whole procedure again I get the following tracing the progress (seems it's loading from cache): loaded 0 of 201835 loaded 201835 of 201835 loaded 201835 of 201835 Then everything displays correctly. It is always the first load when I have correct trace but incorrect display, then incorrect trace and correct display. I tried my code using the Loader class and everything works perfectly so that's why I suspect that there must be something in Bulk Loader which produces this. What version of the product are you using? On what operating system? 0.9.2.1 rev73 on OSX 10.5 Safari, but tested on Firefox as well. Great class nevertheless, just this strange issue. Oszkar Nagy
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.