Как получить доступ к Actionscript из Javascript в Adobe AIR - PullRequest
2 голосов
/ 16 апреля 2009

У меня есть приложение AIR, написанное на html / javascript, и я хочу использовать функции печати Actionscript, но у меня нет опыта в ActionScript для AIR.

Где я могу разместить код Actionscript? Он входит в файл mxml или его нужно скомпилировать в приложение Flash. Куда мне его поместить и как включить в HTML-документ? Наконец, как мне вызвать функцию AS из Javascript?

===== обновление =====

Я знаю, что должен скомпилировать файл .mxml или .as в файл .swf, используя mxmlc, и в моем файле .as есть следующее:

package {
    import mx.controls.Alert;
    public class HelloWorld {
        public function HelloWorld():void {
            trace("Hello, world!");
        }
    }
}

Или, альтернативно, в файле .mxml:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
    <![CDATA[
       import mx.controls.Alert;

           public function HelloWorld():void {
               Alert.show("hello world!");
               trace("Hello, world!");
           }
        ]]>
    </mx:Script>
</mx:Application>

Это компилируется нормально, но когда я включаю его в html-файл с помощью:

<script src="actionscript.swf" type="application/x-shockwave-flash"></script>

Я получаю следующую ошибку:

TypeError: Ошибка # 1009: Невозможно получить доступ к свойству или методу пустой ссылки на объект. на mx.managers :: FocusManager / activ () на mx.managers :: SystemManager / activForm () на mx.managers :: SystemManager / activ () на mx.core :: Application / initManagers () на mx.core :: Application / initialize () в actionscript / initialize () на mx.managers :: SystemManager / http://www.adobe.com/2006/flex/mx/internal::childAdded() на mx.managers :: SystemManager / initializeTopLevelWindow () на mx.managers :: SystemManager / http://www.adobe.com/2006/flex/mx/internal::docFrameHandler() на mx.managers :: SystemManager / docFrameListener ()

Есть идеи, что это значит?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2010

Документация по этому вопросу найдена по адресу: http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7ed9.html

Убедитесь, что вы компилируете с помощью acompc:

Примечание. Компиляция SWF-файла ActionScript. библиотека для использования как часть HTML страница в AIR, используйте компилятор acompc

А также ... поскольку вы используете класс Alert ... это зависит от Flex Framework. Убедитесь, что при компиляции SWF. Вы компилируете в целом рамки. (т.е. убедитесь, что -static-link-runtime-shared-libraries=true)

0 голосов
/ 16 апреля 2009

Вы должны использовать air.trace, где air - это предопределенная оболочка Javascript для пакетов служебных AS.

Я предполагал, что вы разрабатываете AIR с использованием HTML / AJAX.

Однако в противном случае вам нужно использовать ExternalInterface, чтобы функции AS были доступны для JS. Можете ли вы сказать нам, зачем вам это нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...