2008/06/22

Mac OSX版Firefox3.0のFlash Player上での重大な問題

Mac OSX版Firefox3.0のFlash Player上で日本語入力は本当にできなかった・・・。
リリース前に各所で噂は聞いていたけど、本当にそのまま正式リリースを迎えるとは残念。
なんて致命的な問題を含んでいるんだろう。

今は問題のバグにパッチを当ててくれたバージョンを使っています。
それだけで、Firefoxをいつまでも2のまま3へ移行しないなんて嫌ですから。

Firefox lzyc build
http://fox.lazycat.info/archives/13

2008/06/21

ImageコントロールでアニメーションGIFが動いてくれない

昨日、画像のロード中にLoadingイメージを表示するよう試みた。
まずは楽しようと、下記のジェネレータでLoadingイメージのアニメーションGIFを作成した。

Ajax loading gif generator
http://www.ajaxload.info/

作ったアニメーションGIFはこんな感じで使おうとした。
imageのvisibleとloadingのvisibleにはloadingData:Boolean(初期値true)をバインディングしておいて、imageの画像データの読み込みが完了したらfalseに値が切り替わり、ロード中から画像の表示へと切り替えるというもの。

<mx:Image id="image" source="{imageUrl}" visible="{!loadingData}"
complete="loadingData=false;"
width="120" height="120" horizontalCenter="0"/>
<mx:Image id="loading" source="@Embed('/assets/loading.gif')"
visible="{loadingData}" horizontalCenter="0" top="30" width="32" height="32"
showEffect="Fade" hideEffect="Fade"/>

しかし、loading.gifがちらっと一瞬表示されたけど動いていないような気が・・・。
確認したところ確かに動いていない。
どうやらFlexのImageコントロールはアニメーションGIFに対応していないようだ。
一応、静止画像は表示される。

調べたところアニメーションGIFに対応したLoaderは作られているようだ。
見つけたのはこれら。

Animated Gif Loader Component
http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1103970

How to load animated GIFs using Adobe Flex 2.0(上記コンポーネントの作者)
http://dougmccune.com/blog/2007/01/19/how-to-load-animated-gifs-using-adobe-flex-20/

as3gif
http://code.google.com/p/as3gif/

しかし、使用するライブラリは増やしたくないので素直にFlashを使ってアニメーションを作ることにした。
それも楽をしたいのでAjax loading gif generatorで作成したアニメーションGIFをFlashで読み込んでムービークリップとしてSWFに書き出すことにした。
なんて怠け者なんだろう。

loading.gifからloading.swfは作れたので、先ほどのコードもちょっと修正して下記のような感じにした。
1カ所、mx:Imageを使っていたところをmx:SWFLoaderに書き換えたくらい。

<mx:Image id="image" source="{imageUrl}" visible="{!loadingData}"
complete="loadingData=false;"
width="120" height="120" horizontalCenter="0"/>
<mx:SWFLoader id="loading" source="@Embed('/assets/loading.swf')"
visible="{loadingData}" horizontalCenter="0" top="30" width="32" height="32"
showEffect="Fade" hideEffect="Fade"/>

これでファイルサイズの大きな画像ファイルを読み込むときはNow Loadingのくるくるしたアニメーションが表示されるようになった。

必要そうだったらファイル一式載せておこう。

2008/06/16

FileReference.upload()の宛先がhttpsだとFirefoxでは失敗する

この前判明したこと。
下記のように、FileReference.upload()の宛先がhttpsだとFirefoxではサーバにリクエストが届かない。
IEでは問題なかった。

private var fileRef:FileReference;
//略
private function upload():void {
var req:URLRequest = new URLRequest("https://xxxx/FileUploader");
req.method = URLRequestMethod.POST;
fileRef.upload(req);
}

どうやらFirefox環境でのバグのようだ。
今のところはhttpで素直に送るか、JavaScriptを使った代替手段で回避するしかなさそう。

FileReference.upload() from Firefox over SSL is problematic
http://bugs.adobe.com/jira/browse/SDK-13196

2008/06/07

dispatchEvent(event:Event)のオーバライドメモ

ふむふむ。

override public function dispatchEvent(event:Event):Boolean
{
var handlerName:String = event.type + "Handler";

if(this.hasOwnProperty(handlerName))
{
var method:Function = this[handlerName] as Function;
method.apply(this, [event.clone()]);
}
return super.dispatchEvent(event);
}

Vistaのアドレスバーちっくなコンポーネント


BreadCrumb Navigator
http://blog.smashedapples.com/2008/06/flex-breadcrumb.html
f:id:infy2c:20080607120554p:image
これイイな。
Windows Vistaのエクスプローラのアドレスバーっぽい。

ナビゲーションパスのそれぞれにドロップダウンがあって、簡単に階層間の移動が可能に。
欲しかったコンポーネントなんだけど、Degrafaってライブラリを使っているのか・・・。

ソースを眺めてみよう。