Hatena::ブログ(Diary)

jiroの日記 このページをアンテナに追加 RSSフィード

2009-01-17

[]Flexドキュメントが追加されたみたい

Adobe Flex 3 リファレンスガイドがhttp://livedocs.adobe.com/flex/3_jp/flex3jp_documentation.zipからzipで落とせるようになりました。

http://blog.isocchi.com/2009/01/flexair-adobe-flex-3.html

だそうです。しかも3.2だそうな。念願のドキュメントですね。

というか、どうもAdobeのページってわかりづらいんですよね。例えば、SDKをどこからDLするとかすごくわかりづらい。デザインをやってるのに、Webのユーザビリティはすごく悪いんですよ。ネーミングセンスもユーザの理解を妨げてるよね。Flex, ActionScript, Flashそれぞれが変な風に絡み合ってて、正直触ったこと無い人には理解ができないような体系になってる。

それと、日本語のページが英語のページに比べて更新が遅すぎる。これも例を挙げると、英語版のAPIドキュメントは3.2のドキュメントなのに、日本語版のドキュメントは3だったりとか。今回はこれで3.2になったから良いけど、も少し対応を早くした方が良いのでは?

企業がFlexを採用技術として評価している場合は、こういった諸々のことがFlexつかえねーという風になりかねない。信頼が置けなければオープンになってる技術でも使いたくないですからね。Flash出身のFlexだから大手SIerにはマイナスイメージからのスタートなんです。もう少し頑張っても良いんじゃないかと思う。

ちなみにFlexが嫌いな訳じゃないですよ。むしろ好きな方です。

2008-07-16

[][]BlurHighlight Airをリリースしていました

告知し忘れていたのですが、以前リリースしたBlurHighlightですが、実はAir版をリリースしていたのでした。全然告知してなかったですね。


今までは、Webに一度画像をアップロードしなければいけなかったので、機密情報がつまったファイルはアップしにくかったと思いますが、Air版はローカルだけで完結し、ファイルのアップロードは行われないので安心です。


よろしければお使いください。インストールはこのページからお願いします。


BlurHighlight Air

2008-05-30

[]As Button Generatorを作りました

As Button Generatorを作りました。

簡単にメッセージや画像入りのボタンを作成する事ができます。


他のボタンジェネレーターと以下の点で差別化をしています。

  • 角の丸みや、大きさ等多くの項目をスライダーで変更可能
  • 変更をリアルタイムに見る事ができる
  • 画像や、テキストを自由にD&Dで配置できる
  • ストライプの有無や、傾き、透明度等も変更できます。
  • 文字や、ボタン全体にDropShadowやBevelFilterを適用可能です。

注意事項としては、全体にフィルターを適用すると画像や、テキストが移動できなくなってしまう事ですね。

それだけ気をつければ問題ないと思います。


これで作成したボタンは自由に使っていただいて構いません。ホームページの作成や

プログラム中のボタン等に使用してください。


これからどのようにしていくかどうかは分かりませんが、とりあえず公開します。


なお、問い合わせはjirokun at gmailまでお願いします。

f:id:sukesam:20080530001545p:image

余談

だいぶ前から作りたかったんですが、なかなかやる気が起きず、今になってやっと実現させました。

そのときの日記を見返してみましたが、今年の1月なんですね。

かなり、昔です。アイデアの元になったiPhoneボタンの作者のid:nitoyonさんに感謝です。でも、iPhoneボタンの方が奇麗ですね。

iPhoneボタンも作れるようにしようかしら。


ところで、今のバージョンでは画像の配置や、ボタンのダウンロード時に一度サーバーにデータをアップロードし、

それをダウンロードさせています。これは、Flash Player 9のセキュリティ的な仕様でこうなっています。

でもFlash Player 10からローカルに直接保存したりする事が可能だったと想います。そうすればもっとスマートに

データの書き込みができますね。


それから、今のswfのファイルサイズが400KB程度なんですが、結構でかいです。だから、RSLでFrameworkの

ライブラリと分離したいです。時間を見つけてそうしようと想います。

ただ、情報が英語で、いまいちよくわからないというのもあるんですが、、、

2008-05-20

[]BoxにgradientColorsやgradientAlphasを設定する

通常BoxにはgradientColorsやgradientAlphasを設定できません。

ですが、borderStyle="applicationControlBar"と設定するとこれらが設定可能になります。

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Style>
		.buttonRed {
			fillColors: #ff0000, #ffffff;
			fillAlphas: 1, 0;
		}
	</mx:Style>
	<mx:VBox width="150" height="150" styleName="buttonRed" borderStyle="applicationControlBar"/>
</mx:Application>

2008-05-19

[][]Flex3のローカライズを使用する

http://livedocs.adobe.com/flex/3_jp/html/l10n_3.html#727650

に書いてあるけど、一応メモ。

まず、

copylocale en_US ja_JP

で日本用のロケールを作成します。これは、frameworks/locale/locale_nameにフレームワークのロケールを作成します。

一度はこのコマンドを実行しておかないと、コンパイル時にそんなディレクトリないよと怒られてしまうので、はまらないようにしましょう。

次にconfigを設定します。

<flex-config>
	<compiler>
		<locale>
			<locale-element>en_US</locale-element>
			<locale-element>ja_JP</locale-element>
		</locale>
		<source-path>
			<path-element>../locale/{locale}</path-element>
		</source-path>
	</compiler>
</flex-config>

要するに、使用するロケールの定義をすることと、ロケールのディレクトリがソースパス入るように設定します。

ちなみに{locale}というのがそれぞれ、en_USとか、ja_JPとなるみたい。ないと怒られるのでmkdirしておきましょう。

次にすることは../locale/ja_JP/Fuga.propertiesを作成すること。もちろんen_USにも。

hoge=ほげ

あとは、ソースコードにリソースバンドルを使用するように記述してあげるだけ。

<mx:Label text="@Resource(key='hoge', bundle='Fuga')"/>

動的に言語を選択させるには

ResourceManagerを使用します。ResourceManagerのlocaleChainに使用するロケールを設定する事で、動的に表示言語を変更する事ができます。

ちなみにresourceManagerプロパティでResourceManagerのインスタンスにアクセスできます。つまり、

resourceManager.localeChain = ["en_US"];

とか

resourceManager.localeChain = ["js_JP"];

とかすれば良い訳です。なんですが、ここではまりました。@Resource(key=....という書き方だとBindしてくれていないみたいで一向に値が変わりませんでした。

なので、次のようにmxmlに記述します

<mx:Label text="{resourceManager.getString('Fuga', 'hoge')}"/>

これでやっと切り替える事ができるようになります。

ちなみに、なんで配列になっているのかというと、優先順位を決められるのだそうです。インデックスの頭の方から優先的に使用するキーを探しにいき、

一つでもキーが見つからない場合は、次のインデックスの言語をためします。

最後までいっても見つからない場合は、ロケールが見つからなかったと判断し、getStringしてもnullしか帰ってきません。

だから、文字列が軒並み空白になっているときは、localeChainか、キーが設定されていないのではないかと疑いましょう。

初期表示はユーザの言語に合わせたい

Accept-Language HTTP ヘッダーや Capabilities.languageを利用してユーザの言語を初期化時に設定します。


Capabilities.languageにはFlash PlayerやAirの環境の言語コードが入っています。

言語コードだけで、国情報は入っていないので、このままlocaleChainに突っ込んでも、ロケールは見つからず、全ての欄がnull(空文字)になってしまうので注意。

国情報を付加してlocaleChainを設定します。

if (Capabilities.language == 'ja') resourceManager.localeChain = ['ja_JP'];

Accept-Languageはどうやって取得するのかわからないのですが、JavaScriptでAccept-Languageを取得して、それをflashVarsに渡してあげるのではないかと思います。