четверг, сентября 20, 2007

Настройка нормального хелпа под FlashDevelop

Заодно нашел место где можно прописать, что запускается по клавише F1!
Это в настройках плагина AS3 Context -> Documentation Command Line. Надо попробовать настроить нормальный запуск хелпа. К примеру, через Adobe Help Viewer.

Итак, открываем Installed Plugins ->AS3 Context -> Settings -> Documentation Command Line. Видим здесь строку:
http://www.google.com/search?q=%22actionscript 3.0%22+$(ItmTypPkg)+$(ItmTypName)+$(ItmName)+site:livedocs.adobe.com

Всё как на ладони. Попробуем открывать livedocs.adobe.co. Для начал исследуем как он открывается из флэшового хелпа. Для MovieClip открывается такая ссылка:
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/index.html?flash/display/MovieClip.html&flash/display/class-list.html

Напрямую вызвать онлайновый хелп не получится -
$(ItmTypPkg) возвращает flash.display, а нам надо flash/display

Попробуем написать редиректор, который скорректирует имя класса и перебросит нас на нужный раздел.

<?
$index=$_GET["index"];
$item=$_GET["item"];
$class=$_GET["class"];
$package=str_replace(".","/",$_GET["package"]);

Header("Location: http://livedocs.adobe.com/".$index.$package."/".$class.".html#".$item);
?>


Теперь пропишем в настройках F1:
http://www.my_url.ru/fd2livedocs.php?index=flash/9.0/ActionScriptLangRefV3/&package=$(ItmTypPkg)&class=$(ItmTypName)&item=$(ItmName)

где www.my_url.ru - сайт-прокси, на который кладется PHP-редиректор.

Можно указать и ссылку на Flex:
http://www.my_url.ru/__as3doc/fd2livedocs.php?index=flex/2/langref/&package=$(ItmTypPkg)&class=$(ItmTypName)&item=$(ItmName)

К сожалению, не работают якоря для методов, т.к. якоря указываются с "()".

Избавимся от того недостатка:
Добавим параметр $(ItmKind).

http://www.my_url.ru/__as3doc/fd2livedocs.php?index=flex/2/langref/&package=$(ItmTypPkg)&class=$(ItmTypName)&item=$(ItmName)&kind=$(ItmKind)

Меняем код PHP:

<?

$index=$_GET["index"];
$item=$_GET["item"];
$class=$_GET["class"];
$package=str_replace(".","/",$_GET["package"]);

$kind=$_GET["kind"];
if ($kind=="function") $kind="()"; else $kind="";

Header("Location: http://livedocs.adobe.com/".$index.$package."/".$class.".html#".$item.$kind);

?>


Теперь всё Ок.

При вызове справки, броузер открывается в последнем открытом окне - это совсем не удобно.

Попробовал также такую систему для AS2 - не работает, т.к. в livedocs AS2 пути к нужным документам содержат пакеты, а FD пакеты не передет :(.

2 комментария:

Alex комментирует...

да, $(ItmTypPkg) возвращает flash.display вместо flash/display, но можно использовать вместо него $(ItmTypPkgNamePath).
тогда ссылка будет такой: http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/$(ItmTypPkgNamePath).html#$(ItmName)

Alex комментирует...

вместо $(ItmTypPkg)/$(ItmTypName) можно использовать $(ItmTypPkgNamePath).
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/$(ItmTypPkgNamePath).html#$(ItmNameDocs)