문제

MXML을 사용하지 않고 Flex 프레임 워크 및 구성 요소를 사용할 수 있습니까? 나는 Actionscript를 꽤 잘 알고 있으며, 단순한 UI를 얻기 위해 새로운 XML 언어로 엉망이되는 느낌이 들지 않습니다. 누구든지 컴파일 할 수있는 .as 파일로 구성된 예제를 제공 할 수 있습니까 (FlashDevelop을 통해 이상적으로는 Flex SDK로 수행하는 방법에 대해서도 알 수 있지만 Flex Framework를 사용하십시오. 예를 들어, 경고를 열 수있는 Flex 버튼을 표시하는 것만으로는 완벽합니다.

불가능한 경우 누군가가 클래스로 사용자 정의를 부트 스트랩하여 Flex SDK에 액세스 할 수있는 최소한의 MXML 파일을 제공 할 수 있습니까?

도움이 되었습니까?

해결책

Borek과 비슷한 간단한 부트 스트랩을했습니다 (아래 참조). 나는 MXML 파일을 제거하고 싶지만, 그렇지 않으면 Flex (Haloclassic.swc 등)와 함께 제공되는 표준 테마를 얻지 못합니다. Theo가 제안한 것을 수행하는 방법을 아는 사람이 있습니까?

내 단순화 된 부트 스트래핑 방법은 다음과 같습니다.

main.mxml

<?xml version="1.0" encoding="utf-8"?>
<custom:ApplicationClass xmlns:custom="components.*"/>

ApplicationClass.as

package components {
    import mx.core.Application;
    import mx.events.FlexEvent;
    import flash.events.MouseEvent;
    import mx.controls.Alert;
    import mx.controls.Button;

    public class ApplicationClass extends Application {
        public function ApplicationClass () {
            addEventListener (FlexEvent.CREATION_COMPLETE, handleComplete);
        }
        private function handleComplete( event : FlexEvent ) : void {
            var button : Button = new Button();
            button.label = "My favorite button";
            button.styleName="halo"
            button.addEventListener(MouseEvent.CLICK, handleClick);
            addChild( button );
        }
        private function handleClick(e:MouseEvent):void {
            Alert.show("You clicked on the button!", "Clickity");
        }
    }
}

Flex 4와 함께 사용하는 데 필요한 업데이트는 다음과 같습니다.

main.mxml

<?xml version="1.0" encoding="utf-8"?>
<local:MyApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:local="components.*" />

myApplication.AS

package components {
    import flash.events.MouseEvent;
    import mx.controls.Alert;
    import mx.events.FlexEvent;
    import spark.components.Application;
    import spark.components.Button;

    public class MyApplication extends Application {
        public function MyApplication() {
              addEventListener(FlexEvent.CREATION_COMPLETE, creationHandler);
        }
        private function creationHandler(e:FlexEvent):void {
            var button : Button = new Button();
            button.label = "My favorite button";
            button.styleName="halo"
            button.addEventListener(MouseEvent.CLICK, handleClick);
            addElement( button );
        }
        private function handleClick(e:MouseEvent):void {
            Alert.show("You clicked it!", "Clickity!");
        }
    }
}

다른 팁

이것은 MXML에서 기본 부트 스트랩 만 수행하는 매우 간단한 앱입니다. 이것은 MXML입니다.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()">
  <mx:Script source="Script.as" />
</mx:Application>

이것은 스크립트입니다.

import mx.controls.Button;
import flash.events.MouseEvent;
import mx.controls.Alert;
import mx.core.Application;

private function onCreationComplete() : void {
  var button : Button = new Button();
  button.label = "Click me";
  button.addEventListener(MouseEvent.CLICK, function(e : MouseEvent) : void {
    Alert.show("Clicked");
  });

  Application.application.addChild(button);
}

참고 : Flex 라이브러리를 먼저 초기화하지 않는 한 아래 답변은 실제로 작동하지 않습니다. 그렇게하기 위해 많은 코드가 관련되어 있습니다. 자세한 내용은 아래의 의견 또는 기타 답변을 참조하십시오.


메인 클래스는 MXML에있을 필요조차 없으며 mx.core.Application (이것은 a를 가진 MXML 클래스입니다 <mx:Application> 루트 노드는 어쨌든 컴파일됩니다) :

package {

  import mx.core.Application;


  public class MyFancyApplication extends Application {

    // do whatever you want here

  }

}

또한 모든 액션 스크립트 코드가 mxmlc 컴파일러 또는 Flash CS3 저작 도구조차 Flex 클래스를 사용할 수 있습니다. 클래스 경로에서 사용할 수있는 문제 일뿐입니다 (사용시 프레임 워크 SWC 참조. mxmlc 또는 하나를 사용할 때 소스가 포함 된 폴더를 가리키는 것). 문서 클래스가 상속되지 않는 한 mx.core.Application 그러나 프레임 워크의 일부는 이것이 사실이라고 가정하기 때문에 약간의 문제가 발생할 수 있습니다.

예, 클래스 경로에 Flex SWC를 포함하면됩니다. FrameOworks/Lib/Flex.swc의 Flex SDK에서 Flex.swc를 찾을 수 있습니다.

편집 : 한 가지 더 : Flex Builder를 사용하는 경우 새로운 ActionScript 프로젝트를 만들 수 있습니다.이 프로젝트는 본질적으로 위와 동일하게 수행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top