Подтвердить что ты не робот

Можно использовать Flex Framework/Components без использования MXML?

Можно ли использовать Flex Framework и компоненты без использования MXML? Я очень хорошо разбираюсь в ActionScript и не чувствую себя возиться с каким-то новым языком XML, чтобы получить простой пользовательский интерфейс. Может ли кто-нибудь представить пример, состоящий из файла .as, который может быть скомпилирован (в идеале, через FlashDevelop, хотя просто рассказывать, как это сделать с SDK Flex тоже нормально) и использует Flex Framework? Например, просто показ кнопки Flex, которая открывается всплывающим предупреждением, была бы идеальной.

Если это невозможно, может ли кто-то предоставить минимальный файл MXML, который загрузит пользовательский класс AS, который затем получит доступ к Flex SDK?

4b9b3361

Ответ 1

Я сделал простой бутстрап, похожий на Borek (см. ниже). Я хотел бы избавиться от файла mxml, но если у меня его нет, я не получаю ни одну из стандартных тем, которые поставляются с Flex (haloclassic.swc и т.д.). Кто-нибудь знает, как сделать то, что предлагает Тео, и все еще использовать стандартные темы?

Здесь мой упрощенный метод начальной загрузки:

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!");
        }
    }
}

Ответ 2

Это очень простое приложение, которое выполняет только базовую загрузку в 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>

Это Script.as:

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);
}

Ответ 3

ПРИМЕЧАНИЕ. Ответ ниже не будет работать, если вы сначала не инициализируете библиотеку Flex. Для этого есть много кода. См. Комментарии ниже или другие ответы для более подробной информации.


Основной класс не обязательно должен быть в MXML, просто создайте класс, который наследует от mx.core.Application (что в любом случае скомпилировано классом MXML с <mx:Application> root node):

package {

  import mx.core.Application;


  public class MyFancyApplication extends Application {

    // do whatever you want here

  }

}

Кроме того, любой код ActionScript, скомпилированный с помощью компилятора mxmlc или даже инструментарий разработки Flash CS3, может использовать классы Flex, это просто вопрос их доступности в пути к классам (ссылка на структуру SWC, когда используя mxmlc или указывая на папку, содержащую источник при использовании). Если класс документа не наследуется от mx.core.Application, вы можете столкнуться с некоторыми проблемами, хотя, поскольку некоторые вещи в структуре предполагают, что это так.

Ответ 4

Да, вам просто нужно включить flex swc в свой путь к классам. Вы можете найти flex.swc в flex sdk в файле frameoworks/lib/flex.swc

edit: Еще одна вещь: если вы используете Flex Builder, вы можете просто создать новый проект ActionScript, который по существу будет таким же, как и выше.