2012-12-28 3 views
0

flex 3 호환성 모드에서 flex 3.5에서 flex 4.6으로 마이그레이션 중입니다. 내 두 모듈에서이 경고가 나타납니다.Flex4 마이그레이션에서의 모듈 경고

Module1은 직접 참조되는 모듈 또는 응용 프로그램입니다. 이로 인해 Module1과 모든 종속 항목이 색인과 링크됩니다. 이를 피하기 위해 인터페이스를 사용하는 것이 좋습니다.

나는 여러 가지 기능을 가지고 module1.mxmlmodule1controller.as을 갖고 있는데,이 모듈은 mx:ModuleLoader을 사용하는 많은 응용 프로그램 파일에로드됩니다. 내가 호환성 모드라고 말했듯이 내가 스파크를 사용할 수 있을지 모르겠다.

나는이 경고의 의미를 이해하지 못한다고 생각합니다. 모든 것이 응용 프로그램에서 작동합니다. 누군가이 문제를 해결할 수있는 인터페이스의 예를 제공 할 수 있습니까?

+1

즉 갑자기 필요가있는 경우 모듈을 다른 모듈로 교체 할 수 없음을 의미합니다. 따라서 컴파일러는 Module 클래스가 일부 인터페이스를 구현하도록하고 기본 응용 프로그램의 해당 인터페이스를 통해 모든 작업을 수행 할 것을 권장합니다. 이 경우 문제가없는 유사한 인터페이스로 다른 모듈을로드 할 수 있습니다. 공포와 재앙. 그리고 그런데,이 질문에 대한 첫 번째 질문이 아니므로 검색이 많은 도움이 될 수 있습니다. – user1875642

+0

모듈에 인터페이스를 어떻게 구현할 수 있습니까? –

답변

1

다음은 예제입니다.

모듈이 기본 앱에 대해 몇 가지 작업을 수행하기를 원합니다. 예를 들어, 모듈에 일부 사용자에게 알리는 기능을 제공하게하십시오.

그래서, 우리는 그 기능에 대한 인터페이스를 선언 : 우리가 결코하여야한다 주요 응용 프로그램에서 다음

<?xml version="1.0" encoding="utf-8"?> 
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="400" height="300" 
      implements="test.IAlertable" 
      > 

    <fx:Script> 
     <![CDATA[ 
      import mx.controls.Alert; 
      public function alert(message:String):void{ 
       Alert.show(message,message); 
      } 
     ]]> 

    </fx:Script> 
</mx:Module> 

그리고 :

package test 
{ 
    public interface IAlertable 
    { 
     function alert(message:String):void; 
    } 
} 

그런 다음 우리는 우리의 모듈이 해당 인터페이스에 선언 된 기능을 제공 할 수 있다고 선언 모듈 클래스 이름이나 구현에 관심이 있다면 원하는 기능이 있음을 알아야합니다.

<fx:Script> 
     <![CDATA[ 
      import test.IAlertable; 

      protected function handleCreationComplete():void 
      { 
       moduleLoader.loadModule('test/TestModule.swf');   
      } 

      protected function testInterface():void{ 
       var alertModule:IAlertable = IAlertable(moduleLoader.child); 
       alertModule.alert('Hello module world!'); 
      }  

     ]]> 
    </fx:Script> 

    <mx:ModuleLoader id="moduleLoader" width="100%" height="100%" ready="testInterface()"/> 

이제 주 앱을 다시 컴파일하지 않고도 언제든지 기능 구현을 변경할 수 있습니다 (예를 들어, 경고 대신 추적을 수행 할 수 있음). 해당 인터페이스로 다른 모듈 클래스를 만들 수도 있습니다. 주 앱은 변화.

+0

정말 도움이되는 Tnx –