Доброго времени.
Работаю со связкой MySQL-> AMF(PHP) -> AS3, а имменно:
1. В РНР-файле (" getdata.php ") класс, где описываются методы-SQL-запросы.
2. Класс amf.as - класс, где описан метод доступа к " getdata.php ":

Код AS3:
package {
import flash.net.Responder;
import flash.net.NetConnection;
public class Amf {
private var nc : NetConnection = new NetConnection(); //--
public function Amf(hostname:String) {
nc.connect(hostname+"/amfphp/gateway.php"); //--коннектимся к серверу и к обработчику amf
nc.objectEncoding=3; //--метод кодирования
}
/**
*Выполняет запросы к amfphp
* wht - сервис и имя запрашиваемой функции (дальше в примере покажу)
* cb - функция, вызываемая при получении ответа
* args - аргументы, которые должны передаться запрашиваемой функции от серверного скрипта, указываются через запятую) т.е. может быть хоть один хоть десять.
*/
public function toamf(wht:String, cb : Function, ... args) : void {
var resp : Responder = new Responder(cb, onFault); //--обработчик ответа сервера, если все ок, то вызываем переданную нам функцию для ответа (cb), если нет, то функцию сообщения об ошибке.
nc.call.apply(null,[wht,resp].concat(args)); //--немного непонятно, но вкратце: запускаем функции отсылания запроса на сервер, задаем функцию обратного вызова и параметры + функцию при ошибке выполнения.
}
private function onFault(res:Object):void { //--при ошибке выполнения запроса
trace('К севраку не достучались, ответ: ',res);
}
}
}
3. Собственно рабочий AS3 ("amftest.as"):

Код AS3:
package {
import flash.display.MovieClip;
import Amf; //--подключаем наш класс
public class Amftest extends MovieClip {
public function Amftest() {
var amf:Amf=new Amf("http://myservername.ru");
amf.toamf("amftest.getnews.getnews", onGetNews);
/* в " getdata.php " описана функция:
function getnews() { //--выбираем все новости
return mysql_query('select * from news');
}
*/
}
public function onGetNews(o:Object) {
trace(o.serverInfo.initialData);
}
}
}
Рабоает идеально. Вопрос с последним, рабочим AS: как воспользоватся полученными данными? Т.е. получить данные в переменную:

Код AS3:
var result:Object;
.....
public function onGetNews(o:Object) {
result = o;
}
.....
trace (result);
и становится очевидно, что result ни капли не изменился, т.к. я его вызываю, а onGetNews
ещё не сработал.