コンポーネントらしくソースがまとまったので公開してみます。
Air ではウィンドウスタイルが自由に作れるので、奇を衒わず且つそこそこに Flash らしいウィンドウコンポーネントが在ったら便利かなと思って作りました。
tweener 使っているので、試してみたい方はそちらもお忘れ無く。テーマカラーは Tango Desktop Project を参考にしました。
ダウンロード
インストール
ダウンロードしたファイルをクラスフォルダに移動して下さい。
使用例
package {
import com.wrryyy.core.component.air.button.HyButton;
import com.wrryyy.core.component.air.button.HyButtonConfigure;
import com.wrryyy.core.component.air.radio.HyRadio;
import com.wrryyy.core.component.air.radio.HyRadioConfigure;
import com.wrryyy.core.component.air.window.HyWindow;
import com.wrryyy.core.component.air.window.HyWindowEvent;
import com.wrryyy.core.component.air.window.HyWindowConfigure;
import com.wrryyy.core.c.StTangoColor;
import flash.display.MovieClip;
public class Test extends MovieClip {
private var _win:HyWindow;
private var _button:HyButton;
private var _radio1:HyRadio;
private var _radio2:HyRadio;
public function Test() {
var conf:HyWindowConfigure = new HyWindowConfigure( "dev", true, StTangoColor.PLUM );
_win = new HyWindow();
addChild( _win );
_win.initialize( stage.stageWidth, stage.stageHeight, conf );
_win.create();
_button = new HyButton();
_win.addContent( _button );
_button.initialize( 100, 20, new HyButtonConfigure( "button", true, _win.getColorTheme() ) );
_radio1 = new HyRadio();
_win.addContent( _radio1 );
_radio1.initialize( false, new HyRadioConfigure( "radio1", true, _win.getColorTheme() ) );
_radio2 = new HyRadio();
_win.addContent( _radio2 );
_radio2.initialize( false, new HyRadioConfigure( "radio2", true, _win.getColorTheme() ) );
_button.x = _radio1.x = _radio2.x = 100;
_button.y = 100;
_radio1.y = 200;
_radio2.y = 300;
_win.addEventListener( HyWindowEvent.THEME_CHANGED, _onWindowThemeChanged );
_win.setStatusText( "loaded" );
}
private function _onWindowThemeChanged(e:HyWindowEvent):void {
_button.changeColorTheme( _win.getColorTheme() );
_radio1.changeColorTheme( _win.getColorTheme() );
_radio2.changeColorTheme( _win.getColorTheme() );
}
}
}
実行結果
機能
Windows のウィンドウと大体同じ動作です。
解説
_win = new HyWindow();
addChild( _win );
_win.initialize( stage.stageWidth, stage.stageHeight, conf );
_win.create();
HyWindow クラスは次の四段階でステージに生成されます。
- 変数宣言
- addChild()
- initialize()
- create()
_button = new HyButton();
_win.addContent( _button );
_button.initialize( 100, 20, new HyButtonConfigure( "button", true, _win.getColorTheme() ) );
HyButton / HyRadio クラスの場合は create() 不要です。
ウィンドウ内に配置したいので、addChild() の代わりに HyWindow クラスの addContent() を使用します。
var conf:HyWindowConfigure = new HyWindowConfigure( "dev", true, StTangoColor.PLUM );
initialize()の引数にある HyWindowConfigure は HyWindow の設定クラスです。引数は、“ウィンドウ名”、“テーマを使うかどうか”、”テーマ”、の順番です。
テーマで使用している StTangoColor は先述
Tango Desktop Project のテーマです。
テーマを使わない場合の動作は…余り試していません。HyWindowConfigure の変数をいじればいい筈ですが。
_win.addEventListener( HyWindowEvent.THEME_CHANGED, _onWindowThemeChanged );
private function _onWindowThemeChanged(e:HyWindowEvent):void {
_button.changeColorTheme( _win.getColorTheme() );
_radio1.changeColorTheme( _win.getColorTheme() );
_radio2.changeColorTheme( _win.getColorTheme() );
}
この様にテーマ変更のイベントを取得してボタンの色を変更するのも風雅です。