Delphi XE2 之 FireMonkey 入门(12) - 动画(上)
在 HD 窗体上添加一个 TAniIndicator, 修改其 Enabled 属性为 True, 动画完成了.
这是最简单的动画相关的控件了, 只有两个值得注意的属性:
Enabled: Boolean; //
Style: TAniIndicatorStyle; //TAniIndicatorStyle = (aiLinear, aiCircular); {例}
AniIndicator1.Style := TAniIndicatorStyle.aiCircular;
它是怎么动起来的? 追源码, 发现它有一个 FAni: TFloatAnimation; 内部变量.
再就追出 TFloatAnimation 的父类 TAnimation; TAnimation 在 FMX.Types 单元, 看来是核心成员了.
TAnimation 的子类们都在 FMX.Ani 单元:
TFloatAnimation //
TFloatKeyAnimation //
TColorAnimation //
TColorKeyAnimation //
TGradientAnimation //
TPathAnimation //
TRectAnimation //
TBitmapAnimation //
TBitmapListAnimation //
TFloatKeyAnimation //
TColorKeyAnimation //
早在 TFmxObject(FMX 们的祖先)就有了一些动画相关的方法:
StartAnimation(); //
StopAnimation(); //
StartTriggerAnimation(); //
StartTriggerAnimationWait(); //
StopTriggerAnimation(); //
AnimateFloat(); //
AnimateColor(); //
AnimateFloatDelay(); //
AnimateFloatWait(); //
StopPropertyAnimation(); //
另在 FMX.Types 单元还有一些动画插入算法的一些公用函数(应该主要是内部使用):
InterpolateSingle(); //
InterpolateRotation(); //
InterpolateColor(); //
InterpolateLinear(); //
InterpolateSine(); //
InterpolateQuint(); //
InterpolateQuart(); //
InterpolateQuad(); //
InterpolateExpo(); //
InterpolateElastic(); //
InterpolateCubic(); //
InterpolateCirc(); //
InterpolateBounce(); //
InterpolateBack(); //
很多动画应该在设计时就可以方便完成, 在选择某些属性值时可直接添加动画, 如:
//Bitmap 属性:
Create New TBitmapAnimation
Create New TBitmapListAnimation //Color 属性:
Create New TColorAnimation
Create New TColorKeyAnimation //Gradient 属性:
Create New TGradientAnimation //Width、Height、X、Y、StrokeThickness、XRadius、YRadius、Opacity、RotationAngle 等属性:
Create New TFloatAnimation
Create New TFloatKeyAnimation
先尝试一个让控件转起来的动画吧:
添加一个 TRectangle, 从其 RotationAngle 属性 Create New TFloatAnimation (需要删除时, 选定后按 Delete),
然后调整自动建立的 FloatAnimation1 的属性值:
//一般在设计时取值即可, 下面是运行时的代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
FloatAnimation1.Enabled := True;
FloatAnimation1.Loop := True;
FloatAnimation1.Duration := 2.5; //一个动画周期的长度(秒)
FloatAnimation1.StartValue := ; //起点角度
FloatAnimation1.StopValue := ; //终点角度
end;
在设计时制作上面动画的另一方法:
1、添加 TRectangle(Rectangle1);
2、选定 Rectangle1 后添加 TFloatAnimation(FloatAnimation1);
3、修改 FloatAnimation1 的属性 PropertyName 值为 RotationAngle;
4、如上设置 FloatAnimation1 的其它属性.
完全在运行时实现上面动画的代码:
uses FMX.Objects, FMX.Ani; //添加, 但不要重复添加 var
rect: TRectangle; procedure TForm1.FormCreate(Sender: TObject);
begin
rect := TRectangle.Create(Self);
rect.Parent := Self;
rect.Align := TAlignLayout.alCenter; with TFloatAnimation.Create(Self) do
begin
Parent := rect;
PropertyName := 'RotationAngle';
Enabled := True;
Loop := True;
Duration := 2.5;
StartValue := ;
StopValue := ;
end;
end;
Delphi XE2 之 FireMonkey 入门(12) - 动画(上)的更多相关文章
- Delphi XE2 之 FireMonkey 入门(13) - 动画(下)
TAnimation 类的主要成员: protected function NormalizedTime: Single; // procedure ProcessAnimation ...
- Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它
Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它 TFmxObject 增加了 TagObject.TagFloat.TagString, 算 ...
- Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题
Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题 很喜欢 FMX 的一些新控件, 如: TExpander.TArcDial.TComboTrackBar.T ...
- Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem
Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...
- Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBox
Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox.TVertScrollBox.TFramedScrollBox.TFramedVertScrollB ...
- Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu、TMenuItem、TMenuBar、TMainMenu
Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu.TMenuItem.TMenuBar.TMainMenu 相关控件: TMenuBar.TPopup ...
- Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览
Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览 { TControl } public constructor Create(...); ov ...
- Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm
Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm 当我第一次读取 Form1.StyleLookup 并期待出现 "formstyle" 时 ...
- Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库
Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库 一.全设计时操作: 先在窗体上放置控件: DataSource1 : TDataSource; Clie ...
随机推荐
- 关于css清除浮动
1.overflow:hidden 较简单,兼容于市面浏览器.负面效果不详.暂不推荐使用.2.定义clear类,并把clear类赋给浮动元素的父级元素. .clear{display:block;ov ...
- 探索ASP.Net Core 3.0系列二:聊聊ASP.Net Core 3.0 中的Startup.cs
原文:探索ASP.Net Core 3.0系列二:聊聊ASP.Net Core 3.0 中的Startup.cs 前言:.NET Core 3.0 SDK包含比以前版本更多的现成模板. 在本文中,我将 ...
- ASP.NET服务器控件Menu
http://www.cnblogs.com/huc87/archive/2009/04/05/1429831.html ASP.NET服务器控件Menu 1. ASP.NET 服务器控件 ...
- OC中数组排序的3种方法
总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上 ...
- PAT Basic 1041 考试座位号 (15 分)
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考 ...
- java调用shell脚本小demo
复制指定文件cpp.sh: [root@localhost soft]# vim cpp.sh#!/bin/bash name="$1"\cp /home/soft/test/${ ...
- 生成keystore
Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,用于表明开发者身份,可以使用JRE环境中的keytool命令生成.以下是windows平台生成证书的方法: 安 ...
- 关于本地使用antd的upload组件上传文件,ngnix报错405的问题
使用阿里的ui框架antd的upload,会自动请求ngnix上面的一个路径,也就是action所在的位置,一直报错405 not allowed,后来经讨论,统一将action写成一个路径,后端对这 ...
- ie下,首页打开页面非常慢
手里的项目,登录页面在IE下首次进入页面非常的慢,应该不只是登录页面,因为项目我也是半路接手的.开始以为是js的问题,后台把所有的代码都去掉,就一个空白的页面,然后慢慢的试试,最后才发现是一个CSS文 ...
- SQL SERVER 数据库如何限制一列不能重复(已经有主键)
ALTER TABLE 表名ADDCONSTRAINT 约束名 UNIQUE (列名) -------------------------------------------------------- ...