【问题标题】:How to start Application from a simple AS file?如何从一个简单的 AS 文件启动应用程序?
【发布时间】:2010-12-10 11:58:19
【问题描述】:

我想使用 vkontakte 的新包装器功能,它通过在 SWF 包装器下运行来增强您的应用程序能力。

这是一个使用这种机制的sample application。它使用纯动作脚本来显示其内容,而不是 mx:Application

由于以下错误,在我的 mx:Application 上使用包装器失败:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
 at mx.managers::FocusManager/activate()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\FocusManager.as:702]
 at mx.managers::SystemManager/activateForm()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\SystemManager.as:2493]
 at mx.managers::SystemManager/activate()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\SystemManager.as:2451]
 at mx.core::Application/initManagers()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\core\Application.as:1152]
 at mx.core::Application/initialize()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\core\Application.as:834]
 at DummyApp/initialize()[C:\Users\Eran.HOME\Documents\Web Projects\MaxiMarketing\TestMarketing\src\DummyApp.mxml:0]
 at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::childAdded()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\SystemManager.as:2127]
 at mx.managers::SystemManager/initializeTopLevelWindow()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\SystemManager.as:3396]
 at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::docFrameHandler()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\SystemManager.as:3219]
 at mx.managers::SystemManager/docFrameListener()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\SystemManager.as:3065]

所以我想我可以为可以启动我的应用程序的包装器创建一个包装器并提出这个(DummyApp 是我想要午餐的应用程序):

package 
{
 import Components.SidePanel;

 import flash.display.Sprite;
 import flash.events.Event;

   public class AppWrapper extends Sprite 
   {    
     public function AppWrapper() {
      this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
     }

     public function onAddedToStage(e: Event): void {
      var mainApp:DummyApp = new DummyApp();

      this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
     }
   }
}

不幸的是,它也失败了,问题仍然存在,如何从一个简单的 AS 文件启动应用程序?

【问题讨论】:

    标签: apache-flex actionscript-3 wrapper vk


    【解决方案1】:

    您是在尝试制作 actionscript 项目还是flex 应用程序项目(前者不使用Flex 框架,后者使用)?您至少需要一个应用程序 mxml 文件才能使用 Flex 框架。如果您在 Flex 中创建“Actionscript 项目”,则主应用程序文件 (.as) 将是您的“文档类”或包装器。这是有关使用 Actionscript 应用程序包装器的相关帖子:

    Possible to use Flex Framework/Components without using MXML?

    您会在这里看到,您仍然需要使用一些 mxml 来“初始化”actionscript 类。

    【讨论】:

    • Vkontakte 的包装器 (vkontakte.ru/swf/api_wrapper.swf) 只能与纯 AS 很好地交互,所以我需要创建一个 AS 中间包装器来做好它。调用流程应该是这样的:VK Wrapper (pure AS) -> My Wrapper (pure AS) -> My Application (mx:Application)。
    【解决方案2】:

    Vkontakte 的包装器现在支持 Flex,这使得这个问题过时了。

    【讨论】:

      猜你喜欢
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2012-08-27
      相关资源
      最近更新 更多