How to access Actionscript from Javascript in Adobe AIR
- by David Robinson
I have an AIR application written in html/javascript and I want to use the Actionscript print functions but I have no experience in Actionscript for AIR.
Where do I put the Actionscript code ? Does it go into an mxml file or does it need to be compiled into a Flash application. Where do I put it and how do I include it into the html document ? Finally, how do I call the AS function from Javascript ?
=====update=====
I know I have to compile either an .mxml or .as file into .swf using mxmlc and I have the following in my .as file:
package {
    import mx.controls.Alert;
    public class HelloWorld {
        public function HelloWorld():void {
            trace("Hello, world!");
        }
    }
}
Or alternately, this in a .mxml file:
<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>
This compiles OK, but when I include it in a html file with:
<script src="actionscript.swf" type="application/x-shockwave-flash"></script>
I get the following error:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at mx.managers::FocusManager/activate()
    at mx.managers::SystemManager/activateForm()
    at mx.managers::SystemManager/activate()
    at mx.core::Application/initManagers()
    at mx.core::Application/initialize()
    at actionscript/initialize()
    at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::childAdded()
    at mx.managers::SystemManager/initializeTopLevelWindow()
    at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::docFrameHandler()
    at mx.managers::SystemManager/docFrameListener()
Any ideas what that means ?