SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Adobe Developer Connection(AD)

BlazeDSでつくる共有ホワイトボード

BlazeDSのメッセージングを使用するデモアプリケーションを作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

ドラッグ&ドロップ

 ローカルにある画像ファイルを読み込んでボードに貼り付けます。

処理概要
  1. ドロップ対象が、ドロップを受け入れる状態にする。
  2. ドロップされた画像ファイルをサーバへ送信する。
(ShareBoardAIR.mxml)91行目~95行目

 ボードの外枠となるオブジェクト「canvasFrame」に、ドラッグ中のマウスカーソルが重なった時に実行されるイベントリスナを追加しています。サーバと接続中で、かつドラッグされているものがファイルだった場合に、ドラッグを受け入れる状態にしています。マウスカーソルがドロップ可能マークに変わるようになります。

(ShareBoardAIR.mxml)96行目~119行目

 ドロップされたファイルの拡張子を確認し、画像ファイルであった場合にはその内容を読み込み、サーバへ送信しています。読み込まれた画像はここで直接貼り付けているのではなく、サーバを介していることになります。

ローカルファイル書き出し

 画像が貼り付けられたり、描き込みがされている状態のボードのスクリーンショットをJPEGでローカルファイルに保存しています。

(ShareBoardAIR.mxml)260行目~262行目

 キャプチャしたボードの画像を、環境構築時に読み込み設定したライブラリを使用して、JPEGに変換しています。

(ShareBoardAIR.mxml)264行目~269行目

 変換したJPEGデータをデスクトップ上にファイルとして書き出しています。

ログイン・ログアウト

 画面から入力されたユーザ名とパスワードを使用して認証をしています。ポップアップウィンドウで結果を判断しなければいけない都合上、ログインに関する処理はウィンドウファイル内で完結しています。なお、ログインはユーザが本人かを判断する認証処理(Authentication)と、認証されたユーザにアクセス権限があるかを判断する権限チェック(Authorization)に2段階に処理が分かれています。

処理概要
  1. 認証結果を処理するイベントリスナを登録する。
  2. 画面から入力された情報をサーバへ送信する。
  3. 認証結果により起こるイベント内で、成功したならメインウィンドウへ処理を戻し、失敗したならエラーメッセージを表示する。
(LoginWindow.mxml)23行目~54行目

 認証に成功したときに実行されるイベントリスナと、失敗したときに実行されるイベントリスナを登録し、入力されたユーザ名とパスワードをサーバへ送信しています。

(LoginWindow.mxml)25行目~37行目

 認証に成功したときに実行されるイベントリスナです。続いて権限チェックをするイベントリスナと、権限チェックに失敗したときに実行されるイベントリスナを登録し、受信担当メッセージエージェント(Consumer)を購読状態にしています。認証のように明示的にメソッドを呼ぶのではなく、購読状態を開始する課程で権限チェックがされることを利用しています。

(LoginWindow.mxml)38行目~53行目

 権限チェックに失敗したときに実行されるイベントリスナです。サーバへのネットワークレベルでの接続ができなかったときと、認証に失敗したときにエラーメッセージを表示しています。

(LoginWindow.mxml)58行目~67行目

 購読状態が開始されたことでログイン成功と判断し、ログイン後処理をしています。メインウィンドウから渡された関数を呼び出し、不要になったイベントリスナの登録を解除してログインウィンドウを閉じています。

(LoginWindow.mxml)69行目~80行目

 認証には成功したものの権限チェックに失敗したときに、エラーメッセージを表示して認証を解除しています。

メッセージ送受信(サーバ - クライアント)

 こちらのみサーバサイドで実行されるJavaプログラムです。クライアントが接続または切断したときに実行される処理を記述しています。

(ShareBoardBootstrapService.java)23行目~26行目

 サーバ起動時に呼ばれるメソッドです。クライアントの接続または切断を監視するイベントリスナを登録しています。

(ShareBoardBootstrapService.java)38行目~91行目

 イベントリスナのクラスです。接続または切断に応じたメソッドが実行されます。

(ShareBoardBootstrapService.java)42行目~58行目

 クライアントが接続したときに実行されるメソッドです。接続したクライアントに線色を割り当てるメッセージを送信する処理と、他のクライアントに新しいクライアントが接続したことを知らせるメッセージを送信する処理をしています。このメソッドが実行されるのはクライアントの接続完了と同時のため、状況によって線色の割り当てメッセージが届かない場合がありました。それを防ぐために、間隔を開けて送信する別スレッドを起動しています。

(ShareBoardBootstrapService.java)93行目~118行目

 線色割り当てメッセージを実際に送信しているクラスです。

(ShareBoardBootstrapService.java)63行目~74行目

 他のクライアントに、特定のクライアントが切断したことを知らせるメッセージを送信しています。

次のページ
開発環境

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Adobe Developer Connection連載記事一覧

もっと読む

この記事の著者

三上 喜之(ミカミ ヨシユキ)

フリーエンジニア。現在持っているWebアプリ関連スキルをRIA方面へ伸ばすため日々奮闘中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4636 2009/12/01 10:17

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング