研究室の方々が、研究で作るデモアプリをAdobe AIRで実装するらしいので、
あえて初心者向けの内容も、脳内キャッシュからノートにシリアライズ。
まずは、ViewとLogicの分離について、IMXMLObjectインターフェースを使ったやり方。
【目的】
Viewを.mxmlファイルに、Logicを.asファイルに分けて記述したい。
mxmlから<mx:Script>タグや、<mx:Button click="hoge()">みたいなのを撲滅する!!
【方針】
Buttonコンポーネントを持つViewをMVCSampleView.mxmlファイルに記述し、
MVCSampleLogic.asファイルに、そのButtonをクリックした際にAlertを表示するようにLogicを記述する。
【結果】
実装結果。[右クリック -> ソースを表示]でソースが見れます。
【解説】
・MVCSampleViewクラス
<mx:Application>タグに、creationComplete="creationCompleteHandler()"なんて書かない!!
代わりに、
を入れてやる。
Buttonには、"button"というidを振っておく。
・Logicクラス
IMXMLObjectインターフェースは、UIComponentを継承しないけど、mxmlにタグとしてオブジェクトを貼付けたいときに実装すべきインターフェースで、
このIMXMLObjectインターフェースをimplementsし、initializedメソッドを実装する。
引数は document:Object, id:String で、
initializedメソッドはFlexフレームワークにより自動的に呼ばれる。タイミングはmxmlのinitializeの時(たぶん)。
この場合では、documentにはこのオブジェクトを生成したmxmlであるMVCSampleViewへの参照が、idには、文字列"logic"が与えられる。
そして、ViewのCreationCompleteのタイミングでメソッドが呼ばれるようにしておき、
サブクラスがオーバーライドできるようにしておく。
・MVCSampleLogicクラス
プライベート変数として_viewを宣言。(プライベート変数は、先頭に'_'をつける習慣がある)
高速化とコード補完の意味を兼ねて、MVCSampleViewで型宣言もしておく。
Logicで定義した、view_initializeHandlerをオーバーライドし、
この中で、_viewにMVCSampleViewへの参照を入れておく。この内容の処理は、initializedをオーバーライドして、その中に書いてもほぼ同じこと。
initializeフェーズでは、子コンポーネントの生成や、Viewの見た目に影響のある初期化処理を行う。
次に、view_creationCompleteHandlerをオーバーライドする。
このタイミングでは、描画準備の処理が行われているので、今更Viewに大きな影響を与えるような処理は書かない。
イベントリスナーを追加するくらい。
なので、buttonオブジェクトにクリックイベントのイベントリスナーを追加する。
【まとめ】
・mxmlには、ActionScriptを(極力)書かない。サンプルでよく書かれているのは、複数ファイルにわけるとサンプルが見にくくなるし、実際に提示したい提示したいコード以外のところであまり記述を増やしたくないため
・mxmlにスクリプトを書かない代わりに、IMXMLObjectを実装したクラスを貼っておく。
・main関数みたいな感じで、IMXMLObjectクラスのinitializedメソッドが自動で呼ばれる。
・InitializeとCreationCompleteの適切なタイミングで、適切な処理を記述する。
<参考>
SQLiteのDB操作を追加してAIRウィジェットを完成(1/4)- @IT
あえて初心者向けの内容も、脳内キャッシュからノートにシリアライズ。
まずは、ViewとLogicの分離について、IMXMLObjectインターフェースを使ったやり方。
【目的】
Viewを.mxmlファイルに、Logicを.asファイルに分けて記述したい。
mxmlから<mx:Script>タグや、<mx:Button click="hoge()">みたいなのを撲滅する!!
【方針】
Buttonコンポーネントを持つViewをMVCSampleView.mxmlファイルに記述し、
MVCSampleLogic.asファイルに、そのButtonをクリックした際にAlertを表示するようにLogicを記述する。
【結果】
実装結果。[右クリック -> ソースを表示]でソースが見れます。
【解説】
・MVCSampleViewクラス
<mx:Application>タグに、creationComplete="creationCompleteHandler()"なんて書かない!!
代わりに、
を入れてやる。
Buttonには、"button"というidを振っておく。
・Logicクラス
IMXMLObjectインターフェースは、UIComponentを継承しないけど、mxmlにタグとしてオブジェクトを貼付けたいときに実装すべきインターフェースで、
このIMXMLObjectインターフェースをimplementsし、initializedメソッドを実装する。
引数は document:Object, id:String で、
initializedメソッドはFlexフレームワークにより自動的に呼ばれる。タイミングはmxmlのinitializeの時(たぶん)。
この場合では、documentにはこのオブジェクトを生成したmxmlであるMVCSampleViewへの参照が、idには、文字列"logic"が与えられる。
そして、ViewのCreationCompleteのタイミングでメソッドが呼ばれるようにしておき、
サブクラスがオーバーライドできるようにしておく。
・MVCSampleLogicクラス
プライベート変数として_viewを宣言。(プライベート変数は、先頭に'_'をつける習慣がある)
高速化とコード補完の意味を兼ねて、MVCSampleViewで型宣言もしておく。
Logicで定義した、view_initializeHandlerをオーバーライドし、
この中で、_viewにMVCSampleViewへの参照を入れておく。この内容の処理は、initializedをオーバーライドして、その中に書いてもほぼ同じこと。
initializeフェーズでは、子コンポーネントの生成や、Viewの見た目に影響のある初期化処理を行う。
次に、view_creationCompleteHandlerをオーバーライドする。
このタイミングでは、描画準備の処理が行われているので、今更Viewに大きな影響を与えるような処理は書かない。
イベントリスナーを追加するくらい。
なので、buttonオブジェクトにクリックイベントのイベントリスナーを追加する。
【まとめ】
・mxmlには、ActionScriptを(極力)書かない。サンプルでよく書かれているのは、複数ファイルにわけるとサンプルが見にくくなるし、実際に提示したい提示したいコード以外のところであまり記述を増やしたくないため
・mxmlにスクリプトを書かない代わりに、IMXMLObjectを実装したクラスを貼っておく。
・main関数みたいな感じで、IMXMLObjectクラスのinitializedメソッドが自動で呼ばれる。
・InitializeとCreationCompleteの適切なタイミングで、適切な処理を記述する。
<参考>
SQLiteのDB操作を追加してAIRウィジェットを完成(1/4)- @IT
若者に一度だけ与えられる出会いの場、セキュリティ&プログラミングキャンプ - IT戦記
でおなじみの(?)セキュリティ&プログラミングキャンプが今年も開催されます。
公式ホームページ:セキュリティ&プログラミングキャンプ2009
参加条件:22歳以下の学生・生徒
日程:8/12〜8/16
費用:無料
(授業料や教材費だけでなく、宿泊費や食費、交通費もぜんぶ国負担!!いや、国民負担!!!)
コース:セキュリティコース と プログラミングコースの2種類から応募時に選択。
詳しいシラバスは、公式ホームページで
講義内容 | セキュリティ&プログラミングキャンプ2009
ぱっと見た感じ、プログラミングコースが去年に比べ、かなり強化されてる!!
去年のだと、大学でコンピュータサイエンスを専攻していたら、
大学の専門科目とかなり似てるなぁーって感じだったけど、
「講師と環境は世界最高を用意した」----吉岡弘隆氏に聞く − @IT自分戦略研究所
によると、講師陣がパネェwwww
さらに、
セキュリティ・コースには去年参加したけど、あれはお金払ってでも行く価値あるレベル!!
でおなじみの(?)セキュリティ&プログラミングキャンプが今年も開催されます。
公式ホームページ:セキュリティ&プログラミングキャンプ2009
参加条件:22歳以下の学生・生徒
日程:8/12〜8/16
費用:無料
(授業料や教材費だけでなく、宿泊費や食費、交通費もぜんぶ国負担!!いや、国民負担!!!)
コース:セキュリティコース と プログラミングコースの2種類から応募時に選択。
詳しいシラバスは、公式ホームページで
講義内容 | セキュリティ&プログラミングキャンプ2009
ぱっと見た感じ、プログラミングコースが去年に比べ、かなり強化されてる!!
去年のだと、大学でコンピュータサイエンスを専攻していたら、
大学の専門科目とかなり似てるなぁーって感じだったけど、
「講師と環境は世界最高を用意した」----吉岡弘隆氏に聞く − @IT自分戦略研究所
によると、講師陣がパネェwwww
「OSを作ろう組」は『30日でできる! OS自作入門』がテキスト。著者である川合秀実氏自身や、サイボウズ・ラボの竹迫良範氏と天野仁史氏、セキュリティコースと兼任となるはせがわようすけ氏が講師という豪華な布陣である。
「プログラミング言語組」はRuby処理系「YARV」の開発者である笹田耕一氏と、サイボウズ・ラボの西尾泰和氏が担当。
「Linuxカーネル組」は、IPv6プロトコルスタック「USAGI」を開発した吉藤英明氏、@ITで「Linux Kernel Watch」を連載する富士通の小崎資広氏、そしてVA Linux Systems Japanの山幡為佐久氏と、名うてのLinuxカーネルハッカーがそろった。
さらに、
「Linuxカーネル組で見込みのある学生がいたら、リーナス・トーバルズ氏が今年10月に来日するとき、会えるように調整を頑張ります!」
セキュリティ・コースには去年参加したけど、あれはお金払ってでも行く価値あるレベル!!
いろいろRIA勉強会@早稲田 でなんかしゃべってと言われたのでなんかしゃべってみた。
前回のFlex3勉強会でネタをだいぶ出してしまったので、今回は、CHIに関するムービーを流しました。
そのムービーのリンクを貼ります。
順番は適当
・Photosynth
・DeformableWorkspace
前回のFlex3勉強会でネタをだいぶ出してしまったので、今回は、CHIに関するムービーを流しました。
そのムービーのリンクを貼ります。
順番は適当
・Photosynth
・DeformableWorkspace
・KhronosProjector
・typing_system
・typing_system
・comvision_G2
・Layar
・Data Tiles
・触れて感じるテレビ01(NHK)
・PTAM + AR on an iPhone 3G
・Layar
・Data Tiles
・Tangible Bit
・Reactable
・触れて感じるテレビ01(NHK)
・PTAM + AR on an iPhone 3G
・oblog
・E3 2009: Project Natal Xbox 360 Announcement
・Xbox 360 Project NATAL - Official E3 First Look
・Nintendo
・Wii
途中まで書いて放置してましたすみませんm(_ _)m
Flex3勉強会第71回@東京でしゃべってきた内容についてまとめ。
ustされてたっぽいけど、あんま見ないでいいよっ!!
他の人の発表については、偽TAKESAKOメソッドの発動により、全然見れてないので、
id:acehikaruさんのブログを見ると良いよ!!
いそっちの発表の内容は、
Flexというフレームワークにとらわれず、
3Dとか機械学習とか物理エンジン(力学)とか画像処理に関する基礎知識を身につけておくと、
FlexでもSilverLightでも、それ以外でも役に立つよ!!
みたいな話で、
3Dに関しては、Flexデベロッパーが取っ付きやすいように、
Matrix3DとかZソートも絡めた内容。
【3Dについて】
・3Dオブジェクトが表示されるまで(座標変換編)
3Dのオブジェクトを描画するには、すっごい計算が必要!!
基本的な座標変換(アフィン変換)
平行移動:x, y, zに対し、移動したい値を足し算
回転:x, y, zに対し、回転したい角度の回転行列を掛ける。
拡大:x, y, zに対し、拡大(縮小)したい倍率を掛け算
実際の行列の計算については、↓にちょっと書いてあるのでこっち見てね
[3D][Astro] 3Dの移動/回転を行列(Matrix3D)を使ってやる - いそっちノート
なんで、このsinθとかcosθの行列を回転出来るかについては、ここを見てね
モデル変換
オブジェクトに指定されたxとかyとかrotationXをオブジェクトのすべての頂点に適用させる
ビュー変換
カメラの位置や向きで描画が変わるように、カメラのxとかyとかrotationXをオブジェクトのすべての頂点に適用させます。
投影変換
3D(x, y, z)から2D(x, y)に変換する為に、投影変換ってのをやります。
詳しくは、このPDFに書いてあるけど、ようは投影変換用の行列をすべての頂点に適用させます。
ここで言いたい事
・3Dを表示する為には、ものすごい量のベクトル演算が必要!!
・3Dが表示される仕組みを知っていて、それを意識しながらアプリを作ると、高速化出来るかもしれない(その時、必要のない計算を排除するなど)
ここで疑問。
Q. PCゲームとかで3Dとか使いまくってるやつでサクサク動いているのがあるのに、
Flashの3D(Papervisionとか)は重すぎじゃない??
A. PCゲームとかは、GPUを使っているから軽い。
Q. GPU?なにそれ美味しいの??
A. GPUは、ベクトル演算に特化した演算ユニットで、最近のだと200コアくらい。
Q. FlashPlayerは、GPU使ってないの??FlashPlayer10から対応したんじゃないの??
A. GPUで処理出来るのはおそらく、H.264の動画の処理やPixelBenderで作ったエフェクトのみ
と、いうことで、FlashPlayerでOpenGLが使えるようになる日を待ちつつ、
その日が訪れたときの為に、そういう勉強をしておく!!
Zソート編と機械学習編につづく ・ ・ ・ かなぁ??
Flex3勉強会第71回@東京でしゃべってきた内容についてまとめ。
ustされてたっぽいけど、あんま見ないでいいよっ!!
他の人の発表については、偽TAKESAKOメソッドの発動により、全然見れてないので、
id:acehikaruさんのブログを見ると良いよ!!
いそっちの発表の内容は、
Flexというフレームワークにとらわれず、
3Dとか機械学習とか物理エンジン(力学)とか画像処理に関する基礎知識を身につけておくと、
FlexでもSilverLightでも、それ以外でも役に立つよ!!
みたいな話で、
3Dに関しては、Flexデベロッパーが取っ付きやすいように、
Matrix3DとかZソートも絡めた内容。
【3Dについて】
・3Dオブジェクトが表示されるまで(座標変換編)
3Dのオブジェクトを描画するには、すっごい計算が必要!!
基本的な座標変換(アフィン変換)
平行移動:x, y, zに対し、移動したい値を足し算
回転:x, y, zに対し、回転したい角度の回転行列を掛ける。
拡大:x, y, zに対し、拡大(縮小)したい倍率を掛け算
実際の行列の計算については、↓にちょっと書いてあるのでこっち見てね
[3D][Astro] 3Dの移動/回転を行列(Matrix3D)を使ってやる - いそっちノート
なんで、このsinθとかcosθの行列を回転出来るかについては、ここを見てね
モデル変換
オブジェクトに指定されたxとかyとかrotationXをオブジェクトのすべての頂点に適用させる
ビュー変換
カメラの位置や向きで描画が変わるように、カメラのxとかyとかrotationXをオブジェクトのすべての頂点に適用させます。
投影変換
3D(x, y, z)から2D(x, y)に変換する為に、投影変換ってのをやります。
詳しくは、このPDFに書いてあるけど、ようは投影変換用の行列をすべての頂点に適用させます。
ここで言いたい事
・3Dを表示する為には、ものすごい量のベクトル演算が必要!!
・3Dが表示される仕組みを知っていて、それを意識しながらアプリを作ると、高速化出来るかもしれない(その時、必要のない計算を排除するなど)
ここで疑問。
Q. PCゲームとかで3Dとか使いまくってるやつでサクサク動いているのがあるのに、
Flashの3D(Papervisionとか)は重すぎじゃない??
A. PCゲームとかは、GPUを使っているから軽い。
Q. GPU?なにそれ美味しいの??
A. GPUは、ベクトル演算に特化した演算ユニットで、最近のだと200コアくらい。
Q. FlashPlayerは、GPU使ってないの??FlashPlayer10から対応したんじゃないの??
A. GPUで処理出来るのはおそらく、H.264の動画の処理やPixelBenderで作ったエフェクトのみ
と、いうことで、FlashPlayerでOpenGLが使えるようになる日を待ちつつ、
その日が訪れたときの為に、そういう勉強をしておく!!
Zソート編と機械学習編につづく ・ ・ ・ かなぁ??
