Fundux Application Programming Interface (FAPI) - это совокупность инструментов, позволяющих интегрировать ваших флеш-приложения с флеш-порталом fundux.ru. Оффициальная документация по FAPI располагается здесь.
На данный момент FAPI передаёт во флеш-приложения через flashvars несколько переменных:
- идентификатор самого приложения (pid);
- идентификатор пользователя, который в данный момент работает с флеш-приложением (uid);
- логин текущего пользователя (ulogin);
- ссылки на аватарки пользователя (uphoto и uphotobig) и некоторые другие переменные.
Далее рассмотрим работу с этими переменными на конкретном примере. Сперва небольшое наглядное приложение на ActionScript 3.0.
Код ActionScript 3.0:
/*
загружаем из flashvars id (идентификатор) проекта
*/
var pid:String;
if (stage.loaderInfo.parameters.pid != undefined)
{
pid = String(stage.loaderInfo.parameters.pid);
}
else
{
pid = "unknown";
}
/*
загружаем из flashvars id пользователя
*/
var uid:String;
if (stage.loaderInfo.parameters.uid != undefined)
{
uid = String(stage.loaderInfo.parameters.uid);
if (uid=='0')
{
uid = "неавторизированный пользователь";
}
}
else
{
uid = "unknown";
}
/*
загружаем из flashvars логин пользователя
*/
var ulogin:String;
if (stage.loaderInfo.parameters.ulogin != undefined)
{
ulogin = String(stage.loaderInfo.parameters.ulogin);
}
else
{
ulogin = "unknown";
}
/*
загружаем из flashvars ссылку на маленькую аватарку пользователя
*/
var uphoto:String;
if (stage.loaderInfo.parameters.uphoto != undefined)
{
uphoto = String(stage.loaderInfo.parameters.uphoto);
}
else
{
uphoto = "unknown";
}
/*
загружаем из flashvars ссылку на большую аватарку пользователя
*/
var uphotobig:String;
if (stage.loaderInfo.parameters.uphotobig != undefined)
{
uphotobig = String(stage.loaderInfo.parameters.uphotobig);
}
else
{
uphotobig = "unknown";
}
/*
собираем переменные в строку для последующего вывода на экран
*/
var str:String = '<b>Переменные FAPI</b><br><br>id проекта: <u><a href="http://fundux.ru/project' + pid + '" target="_blank">' + pid + '</a></u>\nid текущего пользователя: <u><a href="http://fundux.ru/user' + uid + '" target="_blank">' + uid + '</a></u>\nлогин текущего пользователя: ' + ulogin + '\nссылка на маленькую аватарку: <u><a href="' + uphoto + '" target="_blank">' + uphoto + '</a></u>\nссылка на большую аватарку: <u><a href="' + uphotobig + '" target="_blank">' + uphotobig + '</a></u><br><br>Подчёркиванием выделены ссылки.';
/*
настройки форматирования текста
*/
var fTxt:TextFormat = new TextFormat();
fTxt.size = 12;
fTxt.color = 0x333333;
fTxt.font = "Verdana";
/*
создаём текстовое поле и помещаем в это поле полученные ранее данные
*/
var myTxt:TextField = new TextField();
myTxt.width = 500;
myTxt.height = 350;
myTxt.multiline = true;
myTxt.wordWrap = true;
myTxt.htmlText = str;
myTxt.setTextFormat(fTxt);
addChild(myTxt);
myTxt.x = 25;
myTxt.y = 25;
Результат:
Для проверки работы скрипта ActionScript я воспользовался html-кодом, который имитирует работу FAPI при передаче данных через flashvars. Вот этот HTML-код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FAPI</title>
</head>
<body>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400">
<param name="movie" value="fapi.swf" />
<param name="flashvars" value="pid=2882&w=550&h=400&path=/content/project/swf/swf2882.zip&uid=2909&ulogin=edapskov&uphoto=http://fundux.ru/content/user/ava/user2909_tiny.jpg&uphotobig=http://fundux.ru/content/user/ava/user2909.jpg&sig=c1bc24b559b7f661f82267b3f8956e2a&appid=swf76601"/>
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="fapi.swf" width="550" height="400">
<param name="movie" value="fapi.swf" />
<param name="flashvars" value="pid=2882&w=550&h=400&path=/content/project/swf/swf2882.zip&uid=2909&ulogin=edapskov&uphoto=http://fundux.ru/content/user/ava/user2909_tiny.jpg&uphotobig=http://fundux.ru/content/user/ava/user2909.jpg&sig=c1bc24b559b7f661f82267b3f8956e2a&appid=swf76601"/>
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Загрузить Adobe Flash Player" /></a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</body>
</html>
На ActionScript 2.0 всё примерно также, но только ещё проще :-)
Код ActionScript 2.0:
/*
загружаем из flashvars id проекта
*/
var pidVar:String;
if (_root.pid != undefined)
{
pidVar = String(_root.pid);
}
else
{
pidVar = "unknown";
}
/*
загружаем из flashvars id пользователя
*/
var uidVar:String;
if (_root.uid != undefined)
{
uidVar = String(_root.uid);
if (uidVar == '0')
{
uidVar = "неавторизированный пользователь";
}
}
else
{
uidVar = "unknown";
}
/*
загружаем из flashvars логин пользователя
*/
var uloginVar:String;
if (_root.ulogin != undefined)
{
uloginVar = String(_root.ulogin);
}
else
{
uloginVar = "unknown";
}
/*
загружаем из flashvars ссылку на маленькую аватарку пользователя
*/
var uphotoVar:String;
if (_root.uphoto != undefined)
{
uphotoVar = String(_root.uphoto);
}
else
{
uphotoVar = "unknown";
}
/*
загружаем из flashvars ссылку на большую аватарку пользователя
*/
var uphotobigVar:String;
if (_root.uphotobig != undefined)
{
uphotobigVar = String(_root.uphotobig);
}
else
{
uphotobigVar = "unknown";
}
/*
собираем переменные в строку для последующего вывода на экран
*/
var str:String = '<b>Переменные FAPI</b><br><br>id проекта: <u><a href="http://fundux.ru/project' + pidVar + '" target="_blank">' + pidVar + '</a></u>\nid текущего пользователя: <u><a href="http://fundux.ru/user' + uidVar + '" target="_blank">' + uidVar + '</a></u>\nлогин текущего пользователя: ' + uloginVar + '\nссылка на маленькую аватарку: <u><a href="' + uphotoVar + '" target="_blank">' + uphotoVar + '</a></u>\nссылка на большую аватарку: <u><a href="' + uphotobigVar + '" target="_blank">' + uphotobigVar + '</a></u><br><br>Подчёркиванием выделены ссылки.';
/*
настройки форматирования текста
*/
var fTxt:TextFormat = new TextFormat();
fTxt.size = 12;
fTxt.color = 0x333333;
fTxt.font = "Verdana";
/*
создаём текстовое поле и помещаем в это поле полученные ранее данные
*/
_root.createTextField("myTxt",0,25,25,500,350);
myTxt.multiline = true;
myTxt.wordWrap = true;
myTxt.setNewTextFormat(fTxt);
myTxt.html = true;
myTxt.htmlText = str;
Исходники на ActionScript 2.0 (Macromedia Flash 8) и ActionScript 3.0 (Adobe Flash CS4) можно скачать здесь.
Пример, конечно, грубоватый, но работающий. Проверялся непосредственно на fundux.ru.
Дополнение
Для тестирования работы флеш-приложения с FAPI можно использовать get-запросы (спасибо за напоминание Back_UP-у). То есть обращаемся к нашему тестируемому флеш-ролику примерно так:
fapi.swf?pid=2882&w=550&h=400&path=/content/project/swf/swf2882.zip&uid=2909&ulogin=edapskov&uphoto=http://fundux.ru/content/user/ava/user2909_tiny.jpg&uphotobig=http://fundux.ru/content/user/ava/user2909.jpg&sig=c1bc24b559b7f661f82267b3f8956e2a&appid=swf76601
где fapi.swf - это наше приложение, а после вопросительного знака идут данные в виде пар имя=значение, разделённые знаком амперсанд («&»).
Пример прилагается.