Fire Monkey 3D で、Form を作成し、ツールパレットから
3D Shapes の TRoundCube を Form に貼り付けます。
Form上にマウスを置いてマウスの左ボタンをシングルクリックしたら、
TRoundCube が、Y軸を軸にして90度回転させる方法は、
2012/09/17(最終更新日)で教わりました。
回転角度が90度ですと動いたか動いていないか分かりにくく
動いていないようにも見えます。
(45度だと動いている様子が分かります)
そこで、マウスの左ボタンをシングルクリックしたら TRoundCube が、
Y軸を回転軸として90度回転させ、アニメーションで動いている様子が
分かるようにする方法はありますでしょうか。
詳しい方がいらっしゃいましたらご指導の程よろしくお願い致します。
使用環境
WIN7 Pro SP1 64bit
Delphi XE2 Pro Update4 Hotfix1
こんにちは。
以前にご紹介したダ○ボーとか右手座標系のサンプルは
アニメーションで回転するハズですが?
[FireMonkey で作る地球儀 〜 多分、4 分以内に 〜]
http://www.youtube.com/watch?v=elZt84EzygY
FireMonkey で作る地球儀を自分で1から新規作成してみます。
編集 削除「FireMonkey で作る地球儀」を自分でなぞって再現させました。
あとは自分でやってみます。
ありがとうございました。
たびたびすいません。
自分で作成してみたのですが、マウスの左ボタンをクリックしなくても
Y軸を軸に回転してしまいます。
マウスの左ボタンをクリックしたら、アニメーションでY軸を軸に回転
させるにはどのようにコードを書けばよろしいでしょうか。
ご指導の程よろしくお願い致します。
使用環境
WIN7 Pro 64bit SP1
Delphi XE2 Pro Update4 Hotfix1
TRoundCube の子コントロールになっている FloatAnimation の Enabled を設計時に False にしておき、
マウスクリックのイベントハンドラ内で Enabled を True にしてやればいいです。
その際、Loop プロパティは False にしておかないと延々と回転してしまいます。
失礼。
誤: マウスクリックのイベントハンドラ内で Enabled を True に
正: マウスクリックのイベントハンドラ内で TFloatAnimation.Start;
です。
[アニメーション効果って? (Delphi FireMonkey Tips)]
http://ht-deko.minim.ne.jp/techf005.html
[[Animations] カテゴリ - FireMonkey で使えるコンポーネントは? (Delphi FireMonkey Tips)]
http://ht-deko.minim.ne.jp/techf001_animations.html
TFloatAnimation.Start;
を下記のように追加したのですが、
TFloatAnimation.Start; でエラーになります。
if (Button = TMouseButton.mbLeft) then Begin
TFloatAnimation.Start;
end
お手数かけますがご指導の程よろしくお願い致します。
TFloatAnimation というのは "型" です。
"TRoundCube の子コントロールになっている FloatAnimation" には、
"名前" が付いています。FloatAnimation1 とか FloatAnimation2 とか。
[構造] ペインで名前を確認して下さい。
以前にご紹介したダ○ボーとか右手座標系のサンプルの
ソースコード中にも Start() メソッドは使われていますよ。
ソースコードは読まれましたか?
[ダ○ボー サンプルソースコード]は、コンパイルエラーが出るので
[右手座標系 サンプルソースコード]を新規作成でゼロからなぞってみます。
ありがとうございました。
> コンパイルエラーが出るので
coin.res か...。
使われていないリソースファイルが混入していたようですね。
アーカイブを更新しておきました。
繰り返しになりますが...
作成された TFloatAnimation の名前は [構造] ペインで確認できます。
[構造] ペインはこんな奴です。
http://ht-deko.minim.ne.jp/fm_pic/techf002_01.png
TFloatAnimation は "patlice2011 さんが作られたもの" ですから、
私には名前がわかりませんので、具体的なコードが書けないのです。
[表示 | 構造 (Shift+Alt+F11)] で、構造ペインを出し、
TRoundCube (これまた名前がわかりませんが) の下にぶら下がっている、
TFloatAnimation の名前を見つけて、
if (Button = TMouseButton.mbLeft) then Begin
その名前.Start;
end
とするだけの話なのですよ。
たびたびすいません。
[右手座標系 サンプルソースコード]を解析しているのですが、
[右手座標系 サンプルソースコード]の構造ペインを見ると
frmMain となっています。
FireMonkey HD、FireMonkey 3D で新規作成しても構造ペインは、
Form1 になっています。
どうやれば、frmMain になるのでしょうか。
お手数かけますがご指導の程よろしくお願い致します。
[右手座標系 サンプルソースコード]のURLを追記します。
http://ht-deko.minim.ne.jp/software/righthandrule.zip
> FireMonkey HD、FireMonkey 3D で新規作成しても構造ペインは、
> Form1 になっています。
> どうやれば、frmMain になるのでしょうか。
そこからですか... (^^;A
フォームを作成した場合、デフォルトでは Form1, Form2, Form3...のように自動的に名前が振られます。
この名前はフォーム (TForm / TForm3D) の Name プロパティで変更できますので、
[オブジェクトインスペクタ] で "Name" プロパティを探してそこを変更して下さい。
コントロールも同様で、貼る度に Button1, Button2, Button3...、
Edit1, Edit2, Edit3... のようにデフォルトの名前が振られていきます。
前の投稿で 「あなたが付けた名前は私にはわからない」と書いたのはこういう事です。
[[オブジェクト インスペクタ](IDE チュートリアル)(DocWiki)]
http://docwiki.embarcadero.com/RADStudio/ja/%EF%BC%BB%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88_%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%9A%E3%82%AF%E3%82%BF%EF%BC%BD%EF%BC%88IDE_%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%EF%BC%89
# だんだん元質問から離れていってる気が。
失礼しました。
オブジェクト インスペクタで、Name を変えるだけだったのですね。
ありがとうございました。
>TRoundCube (これまた名前がわかりませんが) の下にぶら下がっている、
>TFloatAnimation の名前を見つけて、
>if (Button = TMouseButton.mbLeft) then Begin
> その名前.Start;
>end
>とするだけの話なのですよ。
名前が誤っていました。
すいませんでした。
名前を合わせたところ意図する動作をしました。
DEKO さんありがとうございました。