2009-04-16 5 views
2

У меня есть приложение AIR, написанное на html/javascript, и я хочу использовать функции печати Actionscript, но у меня нет опыта в ActionScript для AIR.Как получить доступ к ActionScript из Javascript в Adobe 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> 

компилируется нормально, но когда я inclu де его в HTML-файл с:

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

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

TypeError: Error # 1009: Не удается получить доступ к свойству или методу нулевой ссылки на объект. в mx.managers :: FocusManager/активировать() в mx.managers :: SystemManager/activateForm() в mx.managers :: SystemManager/активировать() на mx.core :: Application/initManagers() в mx.core :: Применение/инициализации() в ActionScript/инициализации() в 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() at mx.managers :: SystemManager/docFrameListener()

Любые идеи, что это значит?

ответ

0

You have to use air.trace where air is a predefined Javascript wrapper over utility AS packages.

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

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

+0

Вы говорите, что я могу использовать функции AS непосредственно из JS без необходимости компиляции ActionScript во флеш? – 2009-04-17 02:20:24

0

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

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

Note: To compile an ActionScript SWF library for use as part of an HTML page in AIR, use the acompc compiler

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

Смежные вопросы