2010-07-18 5 views
0

int 변수가 선언 된 주 응용 프로그램이 있습니다. 다른 패키지에있는 다른 구성 요소에서이 변수에 액세스하려고합니다. 어떻게해야합니까?하나의 구성 요소에서 다른 구성 요소로의 가변 액세스 변수

Main.mxml (기본 패키지)

<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" 
           preinitialize = "foo()"> 
    <fx:Script> 
      <![CDATA[ 
         public var value1:int; 
         public function foo():void { 
          value1 = 5; 
         } 

       ]]> 
     </fx:Script> 

    <\s:Application> 

Comp.mxml (구성 요소 패키지)

<?xml version="1.0" encoding="utf-8"?> 
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" 
       creationcomplete = "foo2()"> 
      <fx:Script> 
       <![CDATA[ 
          public function foo2(): void{ 
          //------> access value1 from Main.mxml here. 
          } 

        ]]> 
      </fx:Script> 

</s:Group> 

답변

2

필요한 변수가 기본 응용 프로그램 클래스에 있으므로 parentApplication 속성을 사용하여 액세스 할 수 있습니다. 또는 일부 공공 속성을 통해 값 자체를 전달 - 일반적

Main(this.parentApplication).value; 
//or 
Main(Application.application).value; 

는이를위한 정확한 방법은 발신자 객체 (이 경우, 애플리케이션) 소스 객체의 레퍼런스를 전달하는 것이다. 문제 Comp의 주요 응용 프로그램 자체에 존재한다고 가정 할 수있다 :

<!-- Main.mxml : make value1 [Bindable] if you need the updates to be 
    reflected automatically --> 

<custom:Comp val="{this.value1}"/> 

<!-- Comp.mxml : declare val as a public variable/property --> 
<fx:Script> 
    <![CDATA[ 
     public var val:int; 
    ]]> 
</fx:Script> 
0

당신은 즉, 어디 있는지하는 구성 요소를 말하는 것처럼, 리디렉션의 일종이 필요합니다 :

<fx:Script> 
    <![CDATA[ 
    [Bindable] public var myapp:Application = null; 
    public function get value1():int 
    { 
     return (myapp == null ? 0 : myapp.value1); 
    } 
    public function foo2():void 
    { 
     var i:int = this.value1; 
    } 
    ]]> 
</fx:Script> 

그리고 응용 프로그램 :

<package:Comp myapp="this" /> 

그렇지 않으면 클래스 전체 정적 변수 인 단일 정렬을 만들 수 있습니다. 그러나 그것은 꽤 지저분합니다.

0

귀하의 주요 응용 프로그램은 int 값을 필요로 어떤 구성 요소에 대한 참조를해야한다. 값은 기본 앱에서 설정해야합니다. 구성 요소의 이벤트에 응답하여 값을 설정해야하는 경우 구성 요소가 이벤트를 트리거하고 전달할 수 있으며 주 앱에 이벤트 리스너가있을 수 있으며 필요한 int를 전달할 수 있습니다.

기본 응용 프로그램 actionscript : BindingUtils.bindProperty (this, "i", this.component, "i")의 값을 바인딩 할 수도 있지만 이전 방법이 더 좋습니다.

관련 문제