【发布时间】:2014-11-19 06:34:02
【问题描述】:
我刚刚下载了一个如何开始使用 FireMonkey 3D 的示例,但无法重新编译在早期 Delphi 版本上编写的两个代码部分(我使用的是 Delphi XE6):
第一部分
[dcc32 Error] Unit1.pas(168): E2003 Undeclared identifier: 'Material'
var
Mesh1: TMesh;
BMP: TBitmap;
//....
Mesh1.Material.Texture := BMP;
第二部分,错误:
[dcc32 错误] Unit1.pas(221): E2003 未声明的标识符:'Vector3DAdd'
[dcc32 错误] Unit1.pas(222): E2003 未声明的标识符:'Vector3DScale'
var
Camera1: TCamera;
//....
Camera1.Position.Vector := Vector3DAdd(Camera1.Position.Vector, Vector3DScale(Vector3D(0, 0, 1), (WheelDelta / 120) * 0.3));
如何更改它才能在新的Delphi版本下编译? 整个单位:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UIConsts, System.UITypes, System.Classes, System.Variants, FMX.Types,
FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Objects3D, FMX.Types3D, FMX.Layouts, FMX.Layers3D,
System.Math.Vectors, FMX.Controls3D, FMX.MaterialSources, FMX.StdCtrls, FMX.Forms3D, FMX.Graphics;
type
TForm1 = class(TForm3D)
Camera1: TCamera;
Mesh1: TMesh;
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
procedure GenerateMesh(Func: Integer);
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses Math;
var
Down: TPointF;
procedure TForm1.GenerateMesh(Func: Integer);
var
BMP: TBitmap;
BD: TBitmapData;
k: Integer;
begin
Mesh1.Data.Clear;
BMP := TBitmap.Create(1, 360);
BMP.Map(TMapAccess.ReadWrite, BD);
for k := 0 to 359 do
BD.SetPixel(0, k, CorrectColor(HSLtoRGB(k / 360, 0.75, 0.5)));
BMP.Unmap(BD);
// Mesh1.Material.Texture := BMP;
end;
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer;
var Handled: Boolean);
begin
// Camera1.Position.Vector := Vector3DAdd(Camera1.Position.Vector,
// Vector3DScale(Vector3D(0, 0, 1), (WheelDelta / 120) * 0.3));
end;
end.
【问题讨论】:
-
如果您能解释您发布的代码存在什么问题,这将非常有帮助。你得到什么编译器错误?您是否查看过 XE6 中的源代码或文档,看看您是否能弄明白?你下载的代码是为什么版本的Delphi编写的?
-
是的,当然,忘了这个,问题被修改了。
-
是的,明白了:),我刚刚上传了整个演示项目。链接在问题中。
-
抱歉,我刚刚检查了链接(我将它上传到了 yandex.ru),它工作正常。现在我会把它上传到其他地方。
-
我删除了所有不必要的代码,并注释了无法编译的两部分。
标签: delphi 3d firemonkey