MXMLコンポーネントのレイアウト再利用

デザイナは使えないのですが、MXMLコンポーネントのレイアウトを再利用する方法を見つけることができなかったので考えてみました。
最近少々忙しかったので、遅ればせながらメモ。

MasterLayout.mxmlで定義したレイアウトのカスタムコンポーネントを再利用してCustomLayoutコンポーネントを作りたい感じ。XML宣言等は省略。

MasterLayout.mxml


  
      import flash.display.DisplayObject;

      public var children1:DisplayObject;
      public var children2:DisplayObject;

      public function onCreationComplete() : void{
        this.childContainer1.addChild(children1);
        this.childContainer2.addChild(children2);
      }
    ]]>
  
  
    
    
  
  
    
    
  

CustomLayout.mxml


  
      import flash.events.Event;
      import mx.controls.Alert;

      public function onLinkButton_Click(event:Event) : void {
        Alert.show("linkButton click.");
      }
      public function onButton_Click(event:Event) : void {
        Alert.show("button click.");
      }
    ]]>
  
  
    
      
    
  
  
    
      
    
  

SampleApplication.mxml


  

よし、まだ1ヶ月に1回程度ペースは継続中。。。

POCO

昨日、TechEdASP.NET MVCのセッションで聞いた言葉。
スピーカーの方がMicrosoftアメリカの方で使われていたとお話ししてました。

POCO = Plain Old CLR Object

ぉぉーかっこいい(というかかわいい感じかも)。
PONOよりも素敵な感じ!

これから使ってみようっと。

オーバーライドとオーバーロード

ActionScript3は、オーバーライドは出来る。
オーバーロードは出来ない。(関数の定義が重複しています、というメッセージが出る)

ふむふむ、なるほど。

追記:http://www.libspark.orghttp://www.libspark.org/wiki/yossy/OverloadSupport
はnamespaceを使ってオーバーロードをサポートするようなライブラリを提供していたのでメモ。

可変長引数のジェネリックメソッド

以下のようなコードを実行してみる。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(ToString(new long[] { 1, 2, 3 }));	//これはどのメソッドが呼ばれるか
        Console.WriteLine(ToString(new object[] { 1, 2, 3 }));
        Console.WriteLine(ToString<object>(new long[] { 1, 2, 3 }));
        Console.ReadLine();
    }

    static string ToString<T>(params T[] args)
    {
        Console.WriteLine("generic method called.");
        
        StringBuilder builder = new StringBuilder();
        foreach (T current in args) builder.Append(current.ToString());
        return builder.ToString();
    }

    static string ToString(params object[] args)
    {
        Console.WriteLine("non generic method called.");

        StringBuilder builder = new StringBuilder();
        foreach (object current in args) builder.Append(current.ToString());
        return builder.ToString();
    }
}


結果は、

generic method called.
123
non generic method called.
123
generic method called.
System.Int64[]

となったのでメモ。