Пожалуйста приведите простой пример создание диспатчера для лоадера.. Заранее благодарен!
Добавлено через 1 час 4 минуты
После некоторых колдований получилось всё, что перечислено ниже. Но также получил ошибку:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at MethodInfo-2()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/flash.net:URLLoader:
nComplete()
Содержимое класса:

Код AS3:
ppackage api {
import flash.net.*;
import flash.events.*;
import api.serialization.json.*;
public class DataProvider {
public const API_SERVER_URL: String = "http://api.vkontakte.ru/api.php";
private var _data:Object;
private var _api_id: Number;
private var _api_secret: String;
private var _viewer_id: Number;
private var _test_mode: Boolean;
public function DataProvider(api_id: Number, api_secret: String, viewer_id: Number, test_mode: Boolean = false) {
_api_id = api_id;
_api_secret = api_secret;
_viewer_id = viewer_id;
_test_mode = test_mode;
}
public function request(method: String, options: Object = null):void {
var dispatcher:IEventDispatcher;
var request_params: Object = {method: method};
if (options == null) {
options = new Object();
}
request_params.api_id = _api_id;
request_params.format = "JSON";
if (_test_mode) {
request_params.test_mode = "1";
}
if (options.params) {
for (var i: String in options.params) {
request_params[i] = options.params[i];
}
}
var variables:URLVariables = new URLVariables();
for (var j: String in request_params) {
variables[j] = request_params[j];
}
variables['sig'] = _generate_signature(request_params);
var request:URLRequest = new URLRequest();
request.url = API_SERVER_URL;
request.method = URLRequestMethod.POST;
request.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, function(e:Event){
var loader:URLLoader = URLLoader(e.target);
_data = JSON.decode(loader.data);
//for (var t:String in _data) trace (t + " = " + _data[t]);
dispatcher.dispatchEvent (new Event ("Done"));
});
try {
loader.load(request);
}
catch (error:Error) {
trace ("Can't load url!");
}
}
public function get returned():Object {
return _data;
}
/********************
* Private methods
********************/
/**
* Generates signature
*
*/
private function _generate_signature(request_params): String {
var signature = "";
var sorted_array: Array = new Array();
for (var key in request_params) {
sorted_array.push(key + "=" + request_params[key]);
}
sorted_array.sort();
// Note: make sure that the signature parameter is not already included in
// request_params array.
for (key in sorted_array) {
signature += sorted_array[key];
}
signature = _viewer_id + signature + _api_secret;
return MD5.encrypt(signature);
}
}
}
Содержимое флэшки:

Код AS3:
import api.DataProvider;
var d:Object;
var s:DataProvider = new DataProvider (1501668, "LHHc2CZd7r", 413995, true);
s.request ("getFriends");
root.addEventListener ("Done", function () {trace(s.returned);});
Что я сделал не так?