2009-06-27 4 views
1

저는 Flex Builder를 사용하여 점점 더 많은 자산이 많은 어플리케이션을 Flex Builder에서 모두 만들고 있습니다. 플래시 애셋을 SWC로 내보내거나 내보내는 방법을 알고 있으므로 Flex Builder에서 사용할 수 있습니다. Flash에서 프레임 상태가있는 버튼 MovieClip이 SWC로 게시 된 swf로 내보내거나 포함되어 있으면 어떻게됩니까? 그런 다음 Flexbuilder에서 생성 된 클래스 파일을이 SWC 자산과 연관 시키길 원합니까?FlexBuilder에서 연결된 SWC MovieClip 에셋을 클래스와 연관시키는 방법 ActionScript 프로젝트

난 불필요한 라운드 트립을 피하고 싶습니다 ... 플래시 제작 된 MovieClip 클래스를 편집해야 할 때마다 클래스를 편집하고 다시 작성하거나 SWC로 재 게시하여 Flex Builder에서 사용할 수 있도록해야합니다 . 즉 Flex에서 그래픽 저작물을 제작하는 동안 Flexbuilder에서 모든 코딩 작업을 수행하려고합니다.

답변

3

여기에는 두 가지 방법이 있습니다. 첫 번째 방법은 (꽤 자주 사용하는) FLA를 Flex 프로젝트의 lib 폴더에 포함시키는 것입니다. 그런 다음 FLA에서 ../src/ (제작 설정 -> Flash 탭 -> ActionScript 3 Button) 경로를 설정하여 Flash가 나머지 Flex 응용 프로그램과 동일한 패키지에 도달 할 수 있도록합니다. 이것은 SWC가 Flex에서 이미 가지고있는 클래스의 컴파일 된 버전이라는 것을 의미합니다 (따라서 Flex 프로젝트에 SWC를 기술적으로 추가 할 필요조차 없습니다).

다른 방법으로 이런 식으로 작업하는 것은 플래시 내부의 자산 및 다양한 자산 더미 클래스 할당 - Flash는 이러한 자산의 클래스를 자동으로 생성합니다. 그런 다음 해당 SWC를 Flex 프로젝트로 가져옵니다. 자산 자체는 분명히 멍청한 MovieClips가 될 것입니다.하지만 자산을 인스턴스화하고 제어하는 ​​고유 한 클래스를 작성할 수 있습니다.

+0

Branden, 답변 덕분에 Flex에서 Flash MovieClips가 거의 작동합니다. 나는 "더미 솔루션"을 시도했지만 궁극적으로 더미 클래스없이 작동하도록 내 MovieClip 클래스를 좋아할 것입니다 ... 솔루션이 있습니까? 지금은 SWC를 libs 폴더에 넣으려고 시도하고 Flash Builder가 MovieClips를 찾아 관리합니다. 그러나 클래스 파일을 일반 org.xxx 폴더에 쓰려고하면 클래스가 이미 있음을 알 수 있습니다. 기본적으로 내 MC를 작성하고 Flash IDE의 AS 클래스에 연결 한 다음 Flash Builder에서 인스턴스화하지만 실제로 가져 오지는 않습니다. – dani

+0

첫 번째 방법을 시도 할 때 SWC를 Flex 프로젝트에 적용 할 수 있지만 어떻게 Flex에 액세스 할 수 있습니까? 물론 코드는 잘 컴파일되지만 플래시에서 수행 된 모든 디자인은 나타나지 않습니다. –

0

감사합니다. 하나의 문제는 _if, _over 및 _down 레이블이있는 MovieClip 버튼과 첫 번째 프레임에서 stop() 액션과 같이 말하면 멀티 프레임 인 플래시 애셋을 사용할 때입니다. 삽입 사용은 프레임 기반의 액션 스크립트를 제거합니다. 이 시나리오에 대한 '최상의'솔루션이 있습니까?

2

나는이 좋은 해결책을 내놓으려고 노력해 왔습니다. 내가 찾은 최선의 해결책은 하나의 클래스를 사용하여 다른 클래스를 꾸미는 decorator 패턴을 사용하는 것이다.

public class AnimatedButton extends Sprite 
{ 
    private var mc:MovieClip; 

    public function AnimatedButton(mc:MovieClip) 
    { 
     this.mc = mc; 

     addChild(mc); 

     mc.addEventListener(MouseEvent.CLICK, onClick); 
     mc.addEventListener(MouseEvent.ROLL_OVER, onRollOver); 
     mc.addEventListener(MouseEvent.ROLL_OUT, onRollOut); 
    } 

    protected function onClick (event:MouseEvent):void 
    { 
     mc.gotoAndPlay("clicked"); 
     dispatchEvent(event)); 
    } 

    protected function onRollOver (event:MouseEvent):void 
    { 
     mc.gotoAndPlay("over"); 
     dispatchEvent(event)); 
    } 

    protected function onRollOut (event:MouseEvent):void 
    { 
     mc.gotoAndPlay("out"); 
     dispatchEvent(event); 
    } 
} 

을 한 후 나는 내가 좋아하는 그것을 장식 할 버튼에 롤오버 상태를 추가 할 때 의 내가 플래시에서 버튼을로드하고 다음과 같이 보일 수있는 버튼의 롤오버 동작을 캡슐화하고 싶어한다고 가정 해 봅시다 그래서 :

private var btn:AnimatedButton = new AnimatedButton(new FlashButton()); 

이것은 기본적으로 새롭게 장식 된 기능으로 버튼을 만듭니다. 이제 멋진 기능은 "끝난" "밖"및 "클릭 된"프레임이있는 버튼에 사용할 수 있습니다.

관련 문제