.
BulkLoader, , , , .
, , . , , , . , DataController. DataController - , , :
subscribe, notify
, , , XML, ,
:
- BulkLoader XML. XML, , imageXML :
DataController.instance.notify("ImageXMLLoaded", imageXML);
ImageHolder :
public function ImageHolder() {
DataController.instance.subscribe("ImageXMLLoaded", _populate);
}
private function _populate($imageXML:XML):void {
}
DataController , :
private var _subscribers:Dictionary = new Dictionary(true);
private var _processed:Dictionary = new Dictionary(true);
private var _requests:Dictionary = new Dictionary(true);
:
public function subscribe($eventName:String, $subscriber:Function): void {
var _funcArray:Array;
var _func:Function;
if (_processed[$eventName]) {
$subscriber(_processed[$eventName]);
return;
}
if (! _subscribers[$eventName]) {
_subscribers[$eventName] = new Array();
}
_subscribers[$eventName].push($subscriber);
}
:
public function notify($eventName:String, $data:*, $args:Object = null): void {
var _cnt:Number;
var _subscriberArray:Array;
var _func:Function;
_processed[$eventName] = $data;
if (_subscribers[$eventName] != undefined) {
_subscriberArray = _subscribers[$eventName].slice();
_cnt = 0;
while (_cnt < _subscriberArray.length) {
_func = _subscriberArray[_cnt] as Function;
if ($args) {
_func($feedXML, $args);
} else {
_func($feedXML);
}
_cnt++;
}
}
if (_requests[$eventName]) {
_subscriberArray = _requests[$eventName].slice();
delete _requests[$eventName];
_cnt = 0;
while (_cnt < _subscriberArray.length) {
if (_subscriberArray[_cnt] != null) {
_subscriberArray[_cnt]($data);
}
_cnt++;
}
}
}
:
public function request($eventName:String, $requestFunction:Function): void {
var _requestArray:Array;
var _request:Function;
if (! _feeds[$eventName]) {
if (! _requests[$eventName]) {
_requests[$eventName] = new Array();
}
_requests[$eventName].push($feedFunction);
} else {
$requestFunction(_feeds[$eventName]);
}
}
, , , $eventName _processed. , (_populate .) , _subscribers . , , DataController $eventName .
, , , - . .
_pcessed Dictionary.
, .
, - :
-, , .
public function startMyLoading():void {
loadConfig(onConfigLoaded);
}
public function onConfigLoaded($xml:XML):void {
DataController.instance.notify("configLoaded", $xml);
loadWeatherContiditons(onWeatherConditionsLoaded);
}
public function onWeatherConditionsLoaded($xml:XML):void {
DataController.instance.notify("weatherXMLLoaded", $xml);
}
-, , - :
public function WeatherDisplayView():void {
DataController.instance.subscribe("weatherXMLLoaded", _populateWeatherPanel);
}
private function _populateWeatherPanel($xml:XML):void {
}
private function _onBulkLoaderComplete($evt:Event):void {
DataController.instance.broadcast("ImagesComplete");
}
, config.xml:
public function SomeClass():void {
DataController.instance.subscribe("configLoaded", _handleConfigLoaded);
}
private function _handleConfigLoaded($xml:XML):void {
}
, . config.xml weather.xml. - ... .. ..
5 BulkLoader , . .