掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
アニメーションで、物体を90度ずつ回転させたい (ID:46063)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
FireMonkey で、Cube1 と Cube2(親はCube1) の2つを描画し、 ①マウスの左ボタンを押下したら、Y軸を中心に、 0 -> 90 回転 ②マウスの左ボタンを押下したら、Y軸を中心に、 90 -> 180 回転 ③マウスの左ボタンを押下したら、Y軸を中心に、180 -> 270 回転 ④マウスの左ボタンを押下したら、Y軸を中心に、270 -> 360 回転 と90度づつ回転させたいのですが、ボタンを何度押下しても 0 -> 90 の間でしか回転しません。 ①②③④の順に、Cube を回転させるには下記のコードを どう修正すればいいですか。 詳しい方がいらっしゃいましたら、ご指導の程よろしくお願い致します。 作成手順 ファイル 新規作成 FireMonkey デスクトップアプリケーション HD FireMonkey アプリケーション で作成。 フォームに ツールパレットから、Viewport3D,Light,LightMaterialSource,Button を配置します。 フォームをダブルクリックして、uses 節に FMX.Objects3D と FMX,Ani を手入力で追加します。 親子関係 Form1 | +- Button1 | +- Viewport3D1 | +- Light1 | +- LightMaterialSource1 | +- Cube1 //<-- ツールパレットから配置ではなく、コードで記述する。 | +- FloatAnimation //<-- ツールパレットから配置ではなく、コードで記述する。 | +- Cube2 //<-- ツールパレットから配置ではなく、コードで記述する。 // Unit1.pas ここから unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Objects3D, FMX.MaterialSources, FMX.Controls3D, FMX.Viewport3D,Fmx.Ani; type TForm1 = class(TForm) Viewport3D1: TViewport3D; Light1: TLight; LightMaterialSource1: TLightMaterialSource; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { private 宣言 } Img_Cube1 : TCube; Img_Cube2 : TCube; public { public 宣言 } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); begin with TFloatAnimation.Create(Viewport3D1) do begin Parent := Img_Cube1; PropertyName := 'RotationAngle.Y'; AnimationType := TAnimationType.atIn; AutoReverse := False; Duration := 0.3; Loop := False; //Name := 'FloatAnimation1'; Enabled := True; Interpolation := TInterpolationType.itLinear; StopValue := Img_Cube1.RotationAngle.Y + 90; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Img_Cube1 := TCube.Create(Viewport3D1); Img_Cube1.Parent := Viewport3D1; TCube(Img_Cube1).MaterialSource := LightMaterialSource1; LightMaterialSource1.Diffuse := TAlphaColorRec.Green; Img_Cube1.SetSize(2, 2, 2); Img_Cube1.Position.Point := Point3D(0, 0, 0); Img_Cube2 := TCube.Create(nil); Img_Cube2.Parent := Img_Cube1; TCube(Img_Cube2).MaterialSource := LightMaterialSource1; LightMaterialSource1.Diffuse := TAlphaColorRec.Green; Img_Cube2.SetSize(1, 1, 1); Img_Cube2.Position.Point := Point3D(3, 3, 1); end; end. // Unit1.pas ここまで 使用環境 Delphi XE5 Pro Update2 Win7 Pro 64bit SP1
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.