RAD Studio 勉強会@大阪 14/09/27 TEffectを使った綺麗なForm appmethod含む RAD Studio 勉強会@大阪 14/09/27 TEffectを使った綺麗なForm システムプランベネックス 毛利
自己紹介 毛利と申します
XE7から*.fmxが複数作られます 注意点 マスタ以外のform名は、いじらない(理解できているなら大丈夫です) *.fmxが増えるだけなのでfmxファイルに書き込まれるファイルは プロパティはそれぞれで別です Platformごとの *.fmxはこんな感じです Form1.iPhone4in.fmx ←iPhone Form1.LgXhdpiPh.fmx ←Android5インチ Form1.SmXhdpiPh.fmx ←Android3.5インチ Form1.Macintosh.fmx ←MacOS Form1.pas ←マスタ(Win)
Unit1.pasに呼出すfmxファイルが書かれています {$R *.fmx} {$R *.iPhone4in.fmx IOS} {$R *.LgXhdpiPh.fmx ANDROID} {$R *.SmXhdpiPh.fmx ANDROID} {$R *.Macintosh.fmx _MACOS} なので解っていれば特にこの規則に従わなくても大丈夫だと思います
C++Builderの場合は #pragma resource "*.fmx" #pragma resource ("*.NmXhdpiPh.fmx", _PLAT_ANDROID) #pragma resource ("*.iPhone4in.fmx", _PLAT_IOS)
試してみます マスタ以外でEffectコンポーネントを別のTPanelコンポーネントの上に置くと置けません *. iPhone4in.fmxでは移動できません でもマスタは移動できます
コンポーネントの削除もマスタから 他のfmxファイルから削除すると ご注意ください
Timageも同じくfmxファイルが違うので結果は違います *. iPhone4in.fmxはこんな感じです
⇒ 配置の順番を変えると マスタ側で先に画像まで埋め込んだTimageを作るとほかも反映されます いじってたらマスタfmx以外壊れたりして *. iPhone4in.fmxはこんな感じです ⇒ いじってたらマスタfmx以外壊れたりして 空っぽになったりしました(・_・;)XE7のバグ?
ターゲットデバイスが1種類なら Android/iPhoneなどターゲットが固定ならマスタだけで設計しても問題無いと思います マスタだけを使う場合Formのサイズだけを気にするようにすれば良い
複数*.fmxでの注意まとめ 何事もマスタで関係性だけを作ります それ以外のプロパティなどはそれぞれのfmxファイルのプロパティを変更してOKです あまりにもfmxどうしが違うと壊れてマスタだけの情報になったりしました(・_・;)
TEffect 業務用アプリとしては使わないのでしょうか 業務用タブレットでも楽しい動きが欲しい
TShadowEffectデモ 実行⇒ コードは1行も書かなくてOKです これC++もDelphiも同じです できました完成ですww
次は動きのあるEffectコンポーネントを使ってみます 動画に動きがあるものです デモります
TDissolveTransitionEffectを使って画像を変化させてみましょう 実行⇒ パワポではわかりにくいですが 実行すると 初音ミクとIAの画像が混ざって行く様子がわかります
AnimateFloatメソッドを 使って動きのある処理に変えてみましょう AnimateFloat()は TFmxObjectからあるメソッドなので TFmxObject継承されているFire Monkyのコンポーネントはほとんど実装できます 内部的にTFloatAnimationをCreateしてくれて勝手にStartしてくれます
AnimateFloatメソッドを 使って動きのある処理に変えてみましょう コンパイル時にこんな注意が。。。 でも僕は使いますw TTrackBarのvalueで警告は良いんですけど Tefectにも出てくるなんて
AnimateFloat使い方 FireMonkyのVisualコンポーネント上で例えばTbutton: Button1の場合 Button1.AnimateFloat(‘Position.Y’, 0, 2); こんだけ書いておけば Button1が一番上(Position.Y:=0)に2秒間使って移動します
先ほどのミクとIAが混ざるEffect処理を AnimateFloat使ってみましょう タイマーコンポーネントの イベントハンドラーから DissolveTransitionEffect1.AnimateFloatを 実行してみます Buttonを実装してボタンイベントでもOKです 実行してみます
DissolveTransitionEffect1.AnimateFloatが動いているのが確認できます
実装も簡単です タイマーイベントにほんの数行の処理だけです
Effectかけたあとのデータって保存したいですよね? 可能です Tbitmapを作ってImage1の内容をコピーします その後そのEffectで DissolveTransitionEffect1.ProcessEffect(); メソッドを実行すれば目的のTbitmapにEffect処理がかけれます ProcessEffectメソッドはTeffectで実装されているので 継承されているクラスならすべて持っています
TMultiViewは便利です デモ実行します これTpanelで実装してたと思いますがかなり使えそうです 設定も簡単ですボタンをプロパティに入れるだけです コード書く必要が無いので TMultiView貼ったら実行してみますw デモ実行します
以上 ありがとうございました