0
我剛纔下載的是如何下手FireMonkey 3D工作的例子,但不能重新編譯寫在早期的Delphi版本兩個代碼部分(我使用德爾福XE6):如何修改用舊的Firemonkey 3D編寫的代碼?
第1部分
[dcc32錯誤] 1單元.PAS(168):E2003未聲明的標識符: '材質'
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的哪個版本是你下載的代碼? – 2014-09-24 17:13:22
是的,當然,忘記了這個,問題就被修改了。 – Molochnik 2014-09-24 17:27:26
是的,明白了:),我剛剛上傳了整個演示項目。鏈接在問題中。 – Molochnik 2014-09-24 17:50:52