泡沫webディレクター お仕事日記
大阪と神戸でwebディレクター・デザイナー・その他色々やっている「Sponge Design スポンジデザイン」のブログです。

デザイナーのFlex画面デザイン・コーディング vol.2 Flash Builder 4の場合(2)ボタンカスタマイズ

レイアウト編の続きです。
ボタンのデザインカスタマイズについて。

アイコン/画像をラベルにしたボタンの場合

前回のプロジェクトの際、「好きなデザインでボタン作りたいけどわからん」と訴えたらプログラマ氏が以下のサイトからソースを収集して「参考に」と送ってくれました。
Source of Sample-Flex4-Skinning-ButtonWithIcon
※ソースはマウス右クリック→「View Sourse」でダウンロードできます。

src/skins/にあるスキンを眺めて、「CloseButtonSkin.mxml」を編集してみました。

 ↓ノーマルだとこんなボタンを
ノーマルのボタン

 ↓こんなのにしたい
カスタムのボタン

もちろん、ステート(マウスアップ/マウスオーバー など)で背景色・ボーター色も変更されるように。→ボタンのデモ

◆作り方

1.画像を準備する

背景が透明の画像を用意します。

背景透明のクリアボタン用画像

マウスオーバーなどに応じて画像も変更したい場合は、その分も用意してください。

2. スキンを編集する

上記の「CloseButtonSkin.mxml」をベースにします。
編集する場所は、じっくり眺めてるとわかってきます。

1
<s:Rect left="-1" right="-1" top="-1" bottom="-1" radiusX="2" radiusY="2">

なんとなく背景に四角を敷いてると想像ができますよね。
「radiusX=”2″ radiusY=”2″」は角Rの大ききです。
その他、各要素については前記事にも書いた「Adobe® Flex® 4.1 リファレンスガイド」で確認できます。

グラデーションについては以下の記事がわかりやすかったです。

二度手間ですが、あらかじめボタンデザインはステートごとに画像で作って確認しておき、色等をメモしておくと編集がスムーズ。

画像は一番最後の要素「layer 8: text」以下のこの部分を変更します。

1
<s:BitmapFill source="@Embed('assets/icon_close16.png')"/>

この状態ではどのステートでも同じ画像です。
マウスオーバーで変更したいなら以下のように追加します。

1
2
<s:BitmapFill source="@Embed('assets/customButton.png')"
	source.over="@Embed('assets/customButton_over.png')"/>

また、このボタンはラベルごと画像なので、以下のラベル表示部分は念のためコメントアウトor削除しておきます。

1
2
3
4
5
6
7
8
9
<!--
<s:Label id="labelDisplay" 
	textAlign="center" 
	verticalAlign="middle" 
	maxDisplayedLines="1" 
	horizontalCenter="0" verticalCenter="1" 
	left="10" right="10" top="2" bottom="2">
</s:Label>
-->

3. レイアウト用mxmlに配置する

1
2
<s:Button skinClass="components.customButton" 
	d:userLabel="custom" buttonMode="true"/>

上記は、「プロジェクトルート/src/components/customButton.mxml」として保存した場合の指定です。

完成!

まるごと画像で作るボタンの場合

 ↓例えばこんなのとか

まるごと画像のボタン

Flash Catalystで作ってFalsh Builder4に読み込む(笑)。これが一番簡単〜。
PhotoshopやIllustratorなどでステートごとの画像を作る必要は、もちろんありますが。

※Flash Catalystの操作方法は、Adobeのチュートリアル動画がわかりやすかったです。

Flash Catalystがない場合は…。
以下、upとdisabledの時に「customButton.png」、overとdownは「customButton-over.png」を指定した場合にFlash Catalystで書き出されたスキンです。
編集したらいけそうな感じが…。(すみません、動作未確認です)
「customButton-over.png」を上に重ねて読み込んで、upとdisabledのときに非表示にしてるのかな。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:d="http://ns.adobe.com/fxg/2008/dt">
	<fx:Metadata>[HostComponent("spark.components.Button")]</fx:Metadata>
	<s:states>
		<s:State name="up"/>
		<s:State name="over"/>
		<s:State name="down"/>
		<s:State name="disabled"/>
	</s:states>
	<s:BitmapImage smooth="true" 
		source="@Embed('assets/customButton.png')" 
		d:userLabel="custom" x="0" y="0"/>
	<s:BitmapImage smooth="true" 
		source="@Embed('assets/customButton-over.png')" 
		d:userLabel="custom-over" x="0" y="0" visible.up="false" 
		id="bitmapimage1" visible.disabled="false"/>
</s:Skin>

長くなったので、「チェックボックス/ラジオボタンのカスタマイズ」へ続きます。


Posted by sponge design on 3/8, 2011 :: Categories 仕事
Tags ::

コメントはこちらから↓  トラックバック

コメント

コメントは下のボックスにどうぞ: