2011-05-09 7 views
0

main.mxml에서 event를 통해 comp1.mxml의 함수를 실행해야합니다. 이해하기가 어렵고 작동하지 못하는 것으로 나타났습니다.응용 프로그램에서 구성 요소로 함수 이벤트를 디스패치

public function runComponent():void { 

} 

이 메타 데이터는이 경우에 필요하다 그것을 작동하게하는 방법 :

public function run():void { 
//call a function in comp1.mxml 
} 

과 comp1.mxml에서 main.mxml, 가정?

답변

1

정말 뭘 하려는지에 달렸지 만 어떻게 작동되는지는 기본 앱이 이벤트를 사용하지 않고 어린이의 공용 기능을 호출한다는 것입니다.

다른 방법은 Parsley, RobotLegs 또는 Swiz와 같은 응용 프로그램 프레임 워크를 사용하여 이러한 종류의 '연결'을 수행 할 수 있지만이 경우 바람직하지 않을 수 있습니다.

<s:Application creationComplete="comp.runComponent()"> 
    <comp:Comp1 id="comp" /> 
</s:Application> 
+0

와우! 고마워, 간단한 대답을 얻기 위해 6 시간이 걸렸다 고 생각하고, 이것에 대해 몰랐다. 어떻게 알았어? – Jonyang

+0

상당히 기초적입니다. 이것은보기가있는 OOP이지만 (Flash는 본질적이지만) XML 방식으로 수행됩니다 (Flex). –

+0

너무 많은 Flex에서 XML을 너무 많이 처리했습니다. 특히 MusicXML – Jonyang

0

이벤트 모델의 주요 목표는 구성 요소 사이에 낮은 커플 링을 제공하기 위해 Observer pattern을 구현하는 것입니다 :

는 그래서 그래, 나는 당신이하고 싶은 것은이 같은 생각합니다. comp1.mxml을 포함하는 main.mxml이라는 구성 요소를 갖게합니다. 따라서 main.mxmlcomp1.mxml에 대해 알고 있으며 정상입니다. main.mxml은 아무런 문제없이 public 메서드 comp1.mxml을 호출 할 수 있습니다.

comp1.mxmlmain.mxml에 대해 알 수없는 이벤트 모델을 제공합니다. main.mxmlcomp1.mxml 이벤트를 구독하고 comp1.mxml은 커플 링없이 main.mxml이라는 호출 방법을 시작합니다.

귀하의 질문에 따라 반대되는 것을하고 싶습니다. 나는 그것이 적절한 방법이 아니라고 생각합니다. 이벤트를 사용하여 comp1.mxml의 메소드를 main.mxml에서 호출하지 마십시오. 직접 runComponent()으로 전화하면됩니다.

public function run():void { 
    myComp1Instance.runComponent(); 
} 
+0

예,이 부분을 놓 쳤습니다. 하지만 as3signal에 대한 경험이 있습니까? – Jonyang

+0

실용적인 경험이 없습니다. 나에 관해서는 개인적으로 AS 이벤트 모델이 원래의 다른 이벤트 모델을 가질 이유가 없다. 어쨌든 as3 시그널은 기본 개념 (Observer 패턴 구현)이 동일합니다. 그래서 내 대답은 as3signals를 사용할 때 가치가있다. – Constantiner

+0

DAW 워크 스테이션을 사용해 보겠다. 개인적으로 RobotLegs가 더 인기가있는 경우에도 여전히 MVC를 사용하는 것에 회의적이다. 별도의 구성 요소로 다른 .mxml/.as로 동일한 작업을 수행 할 수 있습니까? – Jonyang

관련 문제