2012-02-10 5 views
4

내 응용 프로그램에 RobotLegs 및 신호 사용. Robotlegs를 사용하여 처음입니다. Joel Hooks 신호를 사용하는 Im 신호 도표 example hereAS3 로봇 다리 및 신호 - 신호 사용, 아주 자세하게, 어떤 대안?

나는 사건과는 대조적으로 아주 장황하게 보였다. 모든 신호에 대해 새로운 클래스를 만들어야하는 반면 이벤트에서는 이벤트 유형을 하나의 클래스로 그룹화합니다.

나는 이것이 시각적이며 즉각적으로 묘사되는 것을 좋아합니다. 신호 패키지를 탐색하면 모든 앱 통신이 공개됩니다. 그것은 나에게 아주 장황하게 보인다.

다른 사람들이 이것을 사용하고 있습니까, 내가 올바른 신호를 사용하는 방식입니까, 아니면 사람들이이 verboseness 주위에 방법을 찾았습니까?

건배

답변

1

올바른 방법입니다. 신호의 주요 이점은 인터페이스 정의에 포함시킬 수 있다는 것입니다. 그러나 분명히 신호의 큰 더미로 끝날 것입니다.

일반적으로 신호는 내 view-> mediator 및 service-> command 통신 (1 대 1)에만 사용됩니다. 시스템 전체 알림의 경우 이벤트 (n-to-n)를 사용합니다. 그것은 신호의 수를 좀 더 관리하기 쉽게 만듭니다. 하지만 분명히 선호하는 문제입니다.

좋은 IDE 및/또는 템플릿 시스템을 사용하면 다양한 신호를 생성해야하는 "고통"이 완화됩니다.

0

은 명령지도를위한 새로운 신호 클래스를 만들 필요가 없습니다. 단지 좋은 연습입니다. "dataType"클래스에 type 속성을 부여하면 switch이됩니다. 하지만 명령에 지저분 할 것입니다. 그러나 명령은 기본적으로 응용 프로그램 전체 작업을 트리거하는 데 사용됩니다.

모든 신호가 응용 프로그램의 광범위한 동작을 유발하지는 않습니다.

예를 들어, 단일 View 이벤트의 힙에 응답하는 경우. 관련 '보기 이벤트'에 대해 Signal 클래스를 만들고 (예 : MyButtonView의 경우 MyButtonSignal) 유형 속성을 지정하는 것이 좋습니다.

myButtonSignal.dispatch(MyButtonSignal.CLICK, {name:'exit'}); 

이 정상적으로 들어

package { 
    public class MyButtonSignal extends Signal { 
     public static const CLICK:String = 'myButtonClick'; 
     public static const OVER:String = 'myButtonOver'; 

     public function MyButtonSignal() { 
      super(String, Object); 
     } 
    } 
} 

파견

과 같이 :

myButtonSignal.add(doMyButtonSignal); 

핸들 신호과 같이 :

protected function doMyButtonSignal(type:String, params:Object):void { 
     switch(type) { 
      case MyButtonSignal.CLICK: trace('click', params.name);   
       break; 


      case MyButtonSignal.OVER: trace('OVER', params.name);   
       break; 
     } 
    } 
처럼

광산의 전형적인 신호가 보일 것이다

가끔은 유용 data 자체 데이터 클래스를 변경할 수 있습니다.

그래서 "aws shit, 나는 다른 이벤트에 반응해야한다"는 것을 깨달을 때, 당신은 Signal에 가서 새로운 static const를 추가하여 이벤트를 나타냅니다. 아마도 Event 개체를 사용할 때 당신 (아마?)과 비슷합니다.

0

이벤트마다 이벤트 유형을 하나의 클래스로 그룹화하는 반면 모든 신호마다 새 클래스를 만들어야합니다. 당신은 당신의 개체/인터페이스의 속성으로 신호 생각할 수

public var myCustomSignal:Signal = new Signal(String,String); 

대신 그냥 속성으로 신호를 사용할 수 있다는 것을 ... 같은 일을

.

그는 Joel의 예에서 시스템 레벨 이벤트를 나타 내기 위해 신호를 사용하고 신호를 유형별로 매핑하는 로봇 신호 SignalMap과 매핑합니다. 유형별로 매핑되므로 각 시스템 레벨 신호에 대해 고유 한 유형을 만들어야합니다.