kagamihogeの日記

kagamihogeの日記です。

Flex

Flex で Servlet からファイルダウンロード

方々を調べていると S2BlazeDS を使用していてもファイルのアップロード・ダウンロードはフツーに Servlet 作ってやったほうが良いというか、それしか方法がない気がする。なので Flex で Servlet からファイルダウンロードするやり方についてのメモ。そうい…

S2BlazeDS が Detected duplicate HTTP-based FlexSessions てエラーで動かない件の解決方法

三日ぐらい前に Dolteng を落としてきて S2BlazeDS + S2JDBC 試してみるか、とやってみた。そしたら、RemoteObject の呼び出し時に Flex 側はこんな感じのエラーが出て動かなかった。 [FaultEvent fault=[RPC Fault faultString="Detected duplicate HTTP-ba…

Object で Java でいうところの Map#keySet や Map#entrySet をしたい

Object をマップとして使用しているときにキーないし値の一覧を取りたい、といったときにどうやるか。Java の Map#keySet や Map#entrySet とはちょっと違うのだけど、反復処理をしたいという意味合いでは同じなのでこういうタイトルにしました。まぁ備忘録…

Flex でディープリンク

Flex って画面ごとに URL を持つことが出来ないので、ディープリンク的なことは出来ないと思っていた。例えばブックマークにパラメータを積んだ URL を保存しておいてそれを呼び出すと特定の画面に飛べるとか、メールに URL が乗っかっていてそれを押すと特…

ポップアップで開いたウィンドウの子コンポーネントにフォーカスを当てる

ポップアップで何がしかの入力画面を開いて、そこの一番上のコンポーネント(例えばテキストフィールド)などにフォーカスを当てたい、場合のやり方。 <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="400" height="300" creationComplete="creationCompleteHandler(event)"> <mx:Script> </mx:script></mx:titlewindow>

Adobe Flex 3 & AIRではじめるアプリケーション開発

業務アプリケーション開発で Flex やることになったら、とりあえずこの一冊を買うのが良いです。業務アプリで必要最小限な情報が載せられています。気を付ける点は、Flex Builder 前提で書かれてるところぐらいでしょうか。でも、仕事ならたいてい Flex Buil…

イベントのバブリングを利用したカスタムコンポーネント間の連携

イベントのバブリングの基礎学習 - kagamihogeのblog の続き。そもそも、俺がなぜイベントのバブリングについて調べるにいたったかですが。Flex のカスタムコンポーネント間で、データの受け渡しやメソッドの呼び出しをさせるなどして、どうやって連携させる…

DataGrid から List へのドラッグ&ドロップ時に型を保持したままコピー

DataGrid や List など ListBase 系コントロールは、dragEnabled, dropEnabled, (dragMoveEnabled )プロパティを設定してやるだけで、要素のドラッグ&ドロップが可能になる。実際にはドラッグ&ドロップ時に細かい制御を実装することになることが多いだろ…

Flex カスタムコンポーネントの憂鬱

Flex は従来の HTML ベースの Web アプリケーションと比べて表現力に優れます、というのは Adobe などなど RIA 陣営の言い分です。それは本当なのかな、ってとこと、そのウラに潜んでることなどを、ここんとこ Flex に関わってきた人間として感じたことを書…

イベントのバブリングの基礎学習

Flex のイベントにはバブリングという概念がある。これを使うことで子から親コンポーネントへとイベントの発生を伝播させることができる。というわけで実験のために下記のようなコードを実行してみる。 <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" initialize="init()"> <mx:Script> </mx:script></mx:vbox>

Spacer によるコンポーネントの左・右・中央寄せレイアウト

Flex には、Spacer という空白(何も描画しない空間)を挿入する GUI コンポーネントが用意されている。リファレンスに書いてある通り、コンポーネントのレイアウトに役立ちます。コンポーネントの右寄せ・左寄せ・中央寄せのサンプル。 <mx:HBox width="100%" borderStyle="inset"> <mx:Spacer width="100%" /> <mx:Button label="ボタン" /> </mx:HBox> <mx:HBox width="100%" borderStyle="inset"> <mx:Button label="ボタン" /> </mx:button></mx:hbox>

ToolTip のフォントサイズを変更する

var css:CSSStyleDeclaration = StyleManager.getStyleDeclaration("ToolTip"); css.setStyle("fontSize", 20); 詳しいことは StyleManager クラスの使用 を参照。

DataGrid からのドラッグ操作中に表示するオブジェクトを変更

Flex でドラッグ&ドロップを実現する方法は、自分が知る限り 2 通りある。1 つは DragManager を使用して自前でドラッグ&ドロップ操作を作るやり方。ウチのエントリだと http://d.hatena.ne.jp/kagamihoge/20080214/1203002949 がそれに相当する。もう 1 …

をコンポーネントの実装に解決できませんでした。

DataGrid を拡張してごにょごにょ、を試していたときのこと。 package mycomponent { public class ExtDataGrid extends DataGrid { // 省略 } } 拡張内容は省略するとして。mxml の方ではこんな使い方をしたら、タイトルのコンパイルエラーが発生した。 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mycomponent="mycomponent.*" ...> <mycomponent:ExtDataGrid id="dataGrid"> …</mycomponent:extdatagrid></mx:application>

htmlText のハイパーテキストリンクで TextEvent.LINK イベントを発火

TextField や Text, Lable には htmlText というフィールドが存在する。これはその名の通り、そこに HTML のテキストを突っ込んで上げると、単純なテキスト表示でなくマークアップされたテキストを表示してくれる、というもの。下記の例みたいに a href を指…

Canvas に Sprite や Shape が addChild できない件

原因と対策はこちら FlexでCanvasにSpriteをaddChildできない件について - 午睡二時四十分Canvas というかコンテナ系クラスの addChild は IUIComponent インターフェイスを実装したクラスでなければならない。引数の型は DisplayObject にもかかわらず。罠…

Flex の localToGlobal の使いどころ

flash.display.DisplayObject#localToGlobal(point:Point):Point - Adobe Flex 3.2 リファレンスガイド によると「point オブジェクトを表示オブジェクトの (ローカル) 座標からステージ (グローバル) 座標に変換します。」とかいう機能を提供してくれるこの…

Flex の XML クラスはちょっとでもおかしな XML ドキュメントは例外出す

当然といえば当然な話なのだけど。文法おかしい XML 食わせて例外出るから何事かと思って気付けませんでした。まずは XML ファイルをロードするコードはこんな感じ。 var myReq:URLRequest = new URLRequest(); myReq.url = "file:///C:/a.html"; var urlLoa…

ActionScript の名前空間で多態的な振る舞い

名前空間てのは、大雑把にいえばスコープを司るもので、Java で言うところの package の機構になる。だけど、AS の名前空間は Java のパッケージ機構とはちょっと異質なところが幾つかある。その一つとして、ActionScript では名前空間を変数として持つこと…

ActionScript の String はイミュータブルってことを知っとけばよい?

チマチマと 詳説 ActionScript 3.0 を読み進めているわけですが、ちょっと気になる記述がありました。 元の変数の値が String か Boolean、Number、int、uint のインスタンスである代入では、ActionScript はその値のコピーを作って、そのコピーを代入先の変…

ActionScript で throw する値はなんでもいい

Java の場合、例外で送出するクラスは Throwable の子孫であるところの Error なり Exception のサブクラスを使用する。一方 ActionScript では例外に使用するデータについて型の制限が存在しない。一応、Adobe 的には「Error のサブクラス使おうね」という…

ActionScript のクラス初期化子

詳説 ActionScript 3.0 をダラダラと読んでいます。何かと Java と比べて読んでしまうのだけど、クラス初期化子の書き方が(Java と比べて)ちょっと面白かったので、実験など含めたメモ。で、クラス初期化子の書き方と使い方。まず、クラスを使う側のテキト…

Flex の Date の比較

AS は Java みたいに before とか after みたいな日付比較のメソッドは Date には無いようだ。んじゃどうするか、って話なんだけど…… time プロパティ(中略)複数の Date オブジェクトを比較する場合に、このメソッドを使って特定の時間を表します。 Date#t…

TabNavigator のコンテナで子オブジェクトが null になる

くわしいことはコチラから。俺もちょっとハマってしまったのでメモ。[as3][flex] TabNavigatorでコンテナの中身の子オブジェクトのインス - f_world21の日記とりあえず、どういう現象が起こるか。 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init(event)"> <mx:Script> </mx:script></mx:application>

Flex でテーブル駆動方式なコードを書く

入力されたキーで分岐して何か処理させたいとかそんな感じのコードを書きたい場合。swtich で分岐してもいいんだけど、配列使ってやると switch 使わずに書ける。 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="init()"> <mx:Script> </mx:script></mx:application>

Flex から絶対パス指定でファイルアップロードはムリっぽい

こんな感じのことはやれるのかな? と思ったわけですよ。Flex から Servlet にファイルアップロード を少し前に書いた。ただ、ファイルの絶対パスを自分で指定してファイルアップロードすることは出来ない。また、ファイルの絶対パスを表示することもできな…

Flex の IMXMLObject で MXML と AS を分離

画面デザインとロジックの分割テクニック | デベロッパーセンター比較的お手軽に MXML と AS を分離するのに IMXMLObject ってのが使えるようだ。 ■imxmlobjecttest.mxml <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:local="*"> <local:HogeHelper id="helper" /> <mx:TextInput id="hoge" /> </mx:textinput></local:hogehelper></mx:application>

Flex のデータバインディングのキホン的な使い方

データバインディング - Flex 2このリファレンス見れば済む話なんですが。基本的に 3 通りあったりしてややこしいんですよね…… 中括弧({})を使用するやり方 たぶん一番手軽かつ使用頻度が高い方法。ちょっとしたサンプル書いたり実験したりする場合もコ…

Flex の Dictionary を弱参照で使う

EventDispatcher#addEventListener 使うとき、useWeakReference は基本 true に設定した方が良いようなので、まずは弱参照の使用例についてメモ。結合配列 - Adobe Flex 3 ヘルプDictionary を作るとき、コンストラクタに true 渡すだけ、のハナシなんですが…

Flex の右クリックあるいはコンテキストメニューの出し方

こんなようなもの。flash.ui.ContextMenu - ActionScript 3.0 言語およびコンポーネントリファレンス なるものを使用する。使い方はこんな感じ。といってもリファレンスの例ほぼそのままだけど。 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="init()"> <mx:Script> </mx:script></mx:application>