나는 내가 델파이에 대한 엠바 카데로 XE6에 효과를 설립 한카드 플립 애니메이션
개발할 FireMonkey 모바일 아이폰에 대한 응용 프로그램 및 안드로이드 엠바 카데로 XE6를 사용하여 플립 애니메이션 효과 실현하려는 :
을소스 코드를 Delphi에서 FireMonkey Mobile로 변환 할 수 있습니까?
나는 내가 델파이에 대한 엠바 카데로 XE6에 효과를 설립 한카드 플립 애니메이션
개발할 FireMonkey 모바일 아이폰에 대한 응용 프로그램 및 안드로이드 엠바 카데로 XE6를 사용하여 플립 애니메이션 효과 실현하려는 :
을소스 코드를 Delphi에서 FireMonkey Mobile로 변환 할 수 있습니까?
예, 가능합니다. 그러나 내가 아는 것은 자동적으로 아무것도 아닙니다. 수동으로해야 할 것입니다. firemonkey 도움 http://docwiki.embarcadero.com/CodeExamples/XE3/en/FMX.MetropolisUIFlipViewDemo_Sample
하고 그것이 무엇처럼 보인다 ..에서
이 코드 조각이 당신에게 Firemonkey를 사용하여 3D-cardflip위한 시발점을 제공 할 수 있습니다.
procedure TFormMain.Flip(aTabControl: TTabControl; aFront, aBack: TTabItem; aBkColor: TAlphaColor; aDirection: TFlipDirection) ;
var
Viewport: TViewport3D;
R: TRectangle3D;
bmpFront: TBitmap;
bmpBack: TBitmap;
matFront: TTextureMaterialSource;
matBack: TTextureMaterialSource;
Depth: extended;
Angle: extended;
begin
// Create a viewport and let it overlap aControl
Viewport := TViewport3D.Create(nil);
Viewport.BoundsRect := aTabControl.BoundsRect;
Viewport.Position.X := aTabControl.Position.X;
Viewport.Position.Y := aTabControl.Position.Y;
Viewport.Color := aBkColor;
Viewport.Parent := Self;
// Create a flat 3d-rectangle and let it fully contain the Viewport
R := TRectangle3D.Create(Viewport);
R.Parent := Viewport;
R.Projection := TProjection.Screen;
R.Width := Viewport.Width;
R.Height := Viewport.Height;
R.Depth := 0;
// Create a texture for the front and the back
matFront := TTextureMaterialSource.Create(Viewport);
aTabControl.ActiveTab := aFront;
matFront.Texture := aTabControl.MakeScreenshot;
R.MaterialSource := matFront;
matBack := TTextureMaterialSource.Create(Viewport);
aTabControl.ActiveTab := aBack;
matBack.Texture := aTabControl.MakeScreenshot;
matBack.Texture.FlipHorizontal;
R.MaterialBackSource := matBack;
// Do the flip
Depth := 10;
R.Position.Z := Depth;
case aDirection of
fdNormal : Angle := 180;
fdReverse: Angle := -180;
end;
R.AnimateFloatWait('Position.Z', Depth, 0.1, TAnimationType.InOut, TInterpolationType.Linear);
R.AnimateFloatWait('RotationAngle.Y', Angle, 0.5,
TAnimationType(cbAnimationType.ItemIndex), {best is In}
TInterpolationType(cbInterpolationType.ItemIndex)); {best is Back}
R.AnimateFloatWait('Position.Z', 0, 0.1, TAnimationType.InOut, TInterpolationType.Linear);
// Clear viewport and its children
Viewport.DisposeOf;
end;
아마 TAnimation의 자손과 함께 할 수 있습니다. – Peter