0

swiz.modules.Module/をロードするswizアプリケーションがあります/モジュールはSwizも使用します。FlashBuilder からアプリケーションを実行すると、アプリケーションは正しく動作します。リリース バージョンはブラウザ内で正しく動作しません。モジュールのプレゼンテーション モデルは、ビュー (モジュール) に挿入しません。Apache Flex 4.13 Flash Player 11.5 任意のブラウザー

これが私のコードです

応用

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx"
           xmlns:config="swiz.conf.*"
           xmlns:swiz="http://swiz.swizframework.org"
            width="955" 
            height="600" 
            addedToStage="application1_addedToStageHandler(event)">

<fx:Script>
    <![CDATA[

        // to enable managers inside modules
        import mx.managers.CursorManager;
        import mx.managers.DragManager;
        import mx.managers.PopUpManager;
        import mx.managers.ToolTipManager;
        import mx.core.EmbeddedFontRegistry;

        private var popUpManager:PopUpManager; 
        private var dragManager:DragManager; 
        private var tooltipManager:ToolTipManager; 
        private var _cursorManager:CursorManager; 
        private var embeddedFontRegistry:EmbeddedFontRegistry;

        import swiz.pm.AppPM;

        [Inject]
        public var appPM:AppPM;

        protected function application1_addedToStageHandler(event:Event):void
        {
            appPM.viewAddedToStage();
        }
    ]]>
</fx:Script>

<fx:Declarations>
    <swiz:Swiz id="mySwiz" >
        <swiz:beanProviders>
            <config:MainApplicationBeans/>
        </swiz:beanProviders>
        <swiz:config>
            <swiz:SwizConfig viewPackages="swiz.views.*"
                             eventPackages="swiz.events.*"/>
        </swiz:config>
    </swiz:Swiz>
</fx:Declarations>

<mx:UIComponent id="modulesContainer"/>

AppController

package swiz.controllers
{
import mx.events.ModuleEvent;

import spark.modules.ModuleLoader;

import org.swizframework.controller.AbstractController;

import swiz.models.AppModel;
import swiz.pm.AppPM;

public class AppController extends AbstractController
{
    [Inject]
    public var appPM:AppPM;

    [Inject]
    public var appModel:AppModel;

    protected var modulesLoader:ModuleLoader;

    [PostConstruct]
    public function initHandler():void
    {
        modulesLoader = new ModuleLoader();
    }

    [EventHandler(event="AppPMEvent.VIEW_ADDED")]
    public function viewAddedHandler():void
    {
        appPM.addModuleLoader(modulesLoader);

        //load first module
        modulesLoader.addEventListener(ModuleEvent.READY,moduleReadyHandler);
        modulesLoader.url = appModel.firstModulePath;
    }

    protected function moduleReadyHandler(event:ModuleEvent):void
    {
        trace("module loaded but not inited yet");

    }
}

}

AppSwizConfig

<?xml version="1.0" encoding="utf-8"?>
<swiz:BeanProvider xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:swiz="http://swiz.swizframework.org" 
               xmlns:controllers="swiz.controllers.*" 
               xmlns:pm="swiz.pm.*" 
               xmlns:models="swiz.models.*" >
<!-- CONTROLLERS --> 
<controllers:AppController id="appController"/>
<!-- MODELS -->
<models:AppModel id="aappModel"/>
<!-- PM -->
<pm:AppPM id="appPM"/>

appPM

package swiz.pm
{
import flash.events.IEventDispatcher;

import spark.modules.ModuleLoader;

import swiz.events.AppPMEvent;

// application view presentation module
public class AppPM
{
    [Dispatcher]
    public var dispatcher:IEventDispatcher;

    protected var view:SwizFlexSparkModulesTest;

    [ViewAdded]
    public function viewAddedHandler(_view:SwizFlexSparkModulesTest):void
    {
        view = _view;
    }

    public function viewAddedToStage():void
    {
        var event:AppPMEvent = new AppPMEvent(AppPMEvent.VIEW_ADDED);
        dispatcher.dispatchEvent(event);
    }

    public function addModuleLoader(value:ModuleLoader):void
    {
        view.modulesContainer.addChild(value);
    }
}

}

モジュール: FirstModule

<?xml version="1.0" encoding="utf-8"?>
<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:ns="http://swiz.swizframework.org"
      xmlns:conf="swiz.modules.FirstModule.swiz.conf.*"
      width="100%" 
      height="100%" >

<fx:Declarations>
    <ns:Swiz id="mySwiz" >
        <ns:beanProviders>
            <conf:FirstModuleBeans/>
        </ns:beanProviders>
        <ns:config>
            <ns:SwizConfig viewPackages="swiz.modules.FirstModule.*"
                             eventPackages="swiz.modules.FirstModule.events.*"/>
        </ns:config>
    </ns:Swiz>
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import swiz.modules.FirstModule.swiz.pm.FirstModulePM;

        [Inject]
        public var pm:FirstModulePM;

        protected function btn_clickHandler(event:MouseEvent):void
        {
            trace("pm = "+pm);
            log.appendText("pm = "+pm);
        }
    ]]>
</fx:Script>

<s:VGroup width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
    <s:Label text="first module"/>
    <s:Button label="Load second module" 
              id="btn" 
              click="btn_clickHandler(event)"/>
    <s:TextArea id="log"/>
</s:VGroup>

最初のモジュール swiz 構成

<?xml version="1.0" encoding="utf-8"?>
<swiz:BeanProvider xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:swiz="http://swiz.swizframework.org" 
               xmlns:pm="swiz.modules.FirstModule.swiz.pm.*">
<!-- PM -->
<pm:FirstModulePM id="pm"/>

初モジュールPM(プレゼンテーションモデル)

package swiz.modules.FirstModule.swiz.pm
{
import flash.events.IEventDispatcher;

public class FirstModulePM
{
    [Dispatcher]
    public var dispatcher:IEventDispatcher;
}

}

4

1 に答える 1

0

リリース バージョンで発生するエラーは何ですか? 特定のクラスが見つからない場合は、それらへのリンクがないため、リリースのビルド時に省略される可能性があります。コンパイル フラグ"link-report filename " を追加して、アプリケーションを機能させるために必要なすべてのクラスが含まれているかどうかを確認してください。詳細情報リンカーの依存関係を調べています。

それらを強制的にリンクするには、メイン アプリケーションで不足しているクラスにインポートを追加するだけです。インポートを整理するときは注意してください。

于 2014-09-22T09:47:14.743 に答える