The <ul><li> construct:

The ULNode list follows the html <ul><li> construct. Every <ul>, <li> tag must have an id (id="foobar") associated with it.
Each id value should be case sensitive and contain no spaces and should be globally unique across all other <ul><li> blocks and all subsequent load calls.
Most other attribute names are prefixed with "data-" to keep the html, X/HTML 5 compliant - in case it is placed on an html page.

Types of assets:

To load and access each UltraLoader asset type:

*Note: UltraLoader has a validator built in. If your <ul><li> construct contains missing or incorrect syntax, view the trace statements in your debugger to help identify where your XMLList syntax is incorrect.

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var flashMC:MovieClip in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var flashMC:MovieClip in ulObj.page3.$flash){...
// contains all flash assets in ulObj.page3
for each(var flashMC:MovieClip in ulObj.$flash){...
// contains all flash assets in ulObj

fontswf: flash.display.MovieClip
Loads in external font swf files as MovieClips. These files contain fonts that will be accessible by all other flash assets.

These font swfs should run the command Font.registerFont
in the first frame or in the contructor of the document class.

*Note: Each image must have an id to load properly, but the images in the textfield will not be seperately loaded into the UltraLoader storage object.
In order for these images to be directly accessible they must be loaded in again using the image type.

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var htmlTF:TextField in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var htmlTF:TextField in ulObj.page3.$htmlfield){...
// contains all htmlfield assets in ulObj.page3
for each(var htmlTF:TextField in ulObj.$htmlfield){...
// contains all htmlfield assets in ulObj

image: flash.display.Bitmap
Loads in image files as Bitmaps. The image <ul><li> construct is different from other asset types.
It is designed so that the image will render if the UltraLoader data is read from an html page.
This allows the html page with UltraLoader data to be seo image friendly and provides more meaningful and presentable flash alternative content.

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var img:Bitmap in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var img:Bitmap in ulObj.page3.$image){...
// contains all image assets in ulObj.page3
for each(var img:Bitmap in ulObj.$image){...
// contains all image assets in ulObj

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var postLoadDataItem:XMLList in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var postLoadDataItem:XMLList in ulObj.page3.$postload){...
// contains all postload assets in ulObj.page3
for each(var postLoadDataItem:XMLList in ulObj.$postload){...
// contains all postload assets in ulObj

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var snd:ULSound in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var snd:ULSound in ulObj.page3.$sound){...
// contains all sound assets in ulObj.page3
for each(var snd:ULSound in ulObj.$sound){...
// contains all sound assets in ulObj

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var str:String in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var str:String in ulObj.page3.$string){...
// contains all string assets in ulObj.page3
for each(var str:String in ulObj.$string){...
// contains all string assets in ulObj

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var tf:TextField in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var tf:TextField in ulObj.page3.$textfield){...
// contains all textfield assets in ulObj.page3
for each(var tf:TextField in ulObj.$textfield){...
// contains all textfield assets in ulObj

* NetConnection and onNetStatus are global. There is only one of each for all videos. They are located at $video.netConnection and $video.onNetStatus
If you need this to be different you have to manually load in your videos without UltraLoader.

** For streaming videos you will need to manually change your NetConnection and NetStream in your code after UltraLoader is done loading. There is only one NetConnection for all videos loaded in with UltraLoader and it is located at $video.netConnection

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var videoItem:ULVideo in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var videoItem:ULVideo in ulObj.page3.$video){...
// contains all video assets in ulObj.page3
for each(var videoItem:ULVideo in ulObj.$video){...
// contains all video assets in ulObj

Collections: You can loop through each of these ordered collections. The assets are stored in the order they were inserted in the XMLLists.

for each(var xmlItem:XMLList in ulObj.page3.anythingyouwant){...
// contains all assets in the ulObj.page3.anythingyouwant block
for each(var xmlItem:XMLList in ulObj.page3.$xml){...
// contains all xml assets in ulObj.page3
for each(var xmlItem:XMLList in ulObj.$xml){...
// contains all xml assets in ulObj

[static]
The UltraLoader.LOAD_REQUEST_COMPLETE constant defines the value of the type property of the event object for a ultraLoaderComplete event.
Once this event is triggered you can set your ultraloader instance to null.

*Note: If DisplayObjectContainer is not passed the preloader will not display.

preloaderClassP:Class (default = null) — preloaderClassP Sets a preloader Custom Class so you can design your own. But it must implment ULPreloaderInterface. Other preloader parameters are ignored when a custom class is used.

The UltraLoader.LOAD_REQUEST_COMPLETE constant defines the value of the type property of the event object for a ultraLoaderComplete event.
Once this event is triggered you can set your ultraloader instance to null.