2013-02-27 9 views
0

다음과 같이 mxml 응용 프로그램이 있습니다. actionscript 파일에서 레이블 텍스트를 어떻게 변경합니까?액션 스크립트에서 mxml의 요소에 액세스

<?xml version="1.0" encoding="utf-8"?> 
<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" creationComplete="initApp()"> 
    <fx:Script> 
     <![CDATA[ 
      public function initApp(){ 
       var p = new my_player("a"); 
      } 
     ]]> 
    </fx:Script> 
    <s:Label x="700" y="409" text="Label" id="lble" width="131" height="41"/> 
</s:Application> 

my_player.as 코드 생성자 convey_player하는 주요 응용 프로그램에서

package 
{ 
    import spark.components.Label; 
    public class my_player 
    { 
     public var lble:Label; 
     public function my_player(a:String) 
     { 
      lble.text="hello"; 
     } 
    } 
} 
+0

이 코드는 OOP 캡슐화의 기본 원칙을 벗어납니다. 또는 나는 그 문제를 이해하지 못한다. –

+0

@IlyaZ 어떻게 캡슐화 원칙을 어기는거야? – vikingmaster

+0

거기에 두 개의 응용 프로그램 인스턴스가 있는데별로 의미가 없습니다. MXML에서 ActionScript를 분리 할 경우 Flex 4 (스파크) 스키닝 아키텍처에 대해 조사해야합니다. – RIAstar

답변

0

를 주입 라벨 (다른 방법 - 바인딩)

public function initApp(){ 
    var p = new my_player("a", lble); 
} 

public function my_player (a:String, targetLabel:Label) 
{ 
    lble = targetLabel; 
    lble.text="hello"; 
} 
0

당신은 필요가 없습니다 두 번째 수업 : (

<?xml version="1.0" encoding="utf-8"?> 
<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" 
    creationComplete="initApp()"> 
    <fx:Script> 
     <![CDATA[ 
     public function initApp(){ 

      // access your components by id 
      lble.text = "My new text for the label" 
     } 
     ]]> 
    </fx:Script> 
    <s:Label x="700" y="409" text="Label" id="lble" width="131" height="41"/> 
</s:Application> 
+0

스트리밍에는 각각 4 가지 유형이 있으며 각 클래스마다 별도의 클래스가 있으므로 각각의 코드가 하나의 mxml 파일에서 모두 가능하지 않습니다. –

+0

잘못된 접근 방식을 사용하고 있습니다. 구현 된 OOP가 없습니다. 더 나은 예를 들어 설명해 주시고, 특정 문제를 해결하는 방법이 아니라 달성하고자하는 것에 대해 설명해주십시오. –