19

MXML を使用せずに、Flex フレームワークとコンポーネントを使用することはできますか? 私は ActionScript のことはかなりよく知っていますが、新しい XML 言語をいじり回して、単純な UI をそこに組み込むようなことはしたくありません。コンパイル可能な.asファイルで構成された例を誰でも提供できますか(理想的にはFlashDevelopを介して、Flex SDKでそれを行う方法を伝えるだけでも問題ありません)、Flex Frameworkを使用しますか? たとえば、アラートを開く Flex ボタンを表示するだけでも完璧です。

それが不可能な場合、Flex SDK にアクセスできるカスタム AS クラスをブートストラップする最小限の MXML ファイルを誰かが提供できますか?

4

4 に答える 4

13

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!");
        }
    }
}
于 2008-10-20T19:29:28.633 に答える
9

これは、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);
}
于 2008-09-26T19:46:59.847 に答える
7

注: 最初に Flex ライブラリを初期化しない限り、以下の回答は実際には機能しません。そのためには、多くのコードが必要です。詳細については、以下のコメントまたは他の回答を参照してください。


メイン クラスは MXML である必要さえありません。継承するクラスを作成するだけですmx.core.Application(これは、ルート ノードを持つ MXML クラス<mx:Application>がコンパイルされるものです)。

package {

  import mx.core.Application;


  public class MyFancyApplication extends Application {

    // do whatever you want here

  }

}

また、コンパイラ (または Flash CS3 オーサリング ツール) でコンパイルされたすべての ActionScript コードは、Flex クラスを使用できます。クラスパスでそれらを使用できるようにするだけです (フォルダーを使用またはmxmlc指定するときにフレームワーク SWC を参照します)。mxmlcいずれかを使用する場合はソースを含む)。ただし、ドキュメント クラスが から継承されていない限り、mx.core.Applicationフレームワーク内のいくつかの事柄がこれが事実であると想定しているため、何らかの問題が発生する可能性があります。

于 2008-09-26T20:38:28.757 に答える
0

はい、クラスパスに flex swc を含めるだけです。flex.swc は、frameoworks/lib/flex.swc の flex sdk にあります。

編集: もう 1 つ: Flex Builder を使用している場合は、基本的に上記と同じことを行う新しい ActionScript プロジェクトを簡単に作成できます。

于 2008-09-26T19:40:58.317 に答える