AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Firemonkey: Animationen in Frames?

Ein Thema von kaju74 · begonnen am 10. Apr 2015 · letzter Beitrag vom 10. Apr 2015
Antwort Antwort
kaju74

Registriert seit: 22. Okt 2003
178 Beiträge
 
#1

Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 09:22
Moin.

Ich experimentiere gerade mit FM rum und bin da wohl auf ein Problem gestoßen:

Wenn man ein FMX-Frame in die Hauptform einbettet und dieses Frame eine Animation hat (z.B. einen Shape per ColorKey-Animation in der Farbe ändern), dann wird diese Animation nicht abgespielt.

Nimmt man statt eines Frames eine Form, funktioniert alles. Nach Analyse des Quellcodes wird bei [MyAnimation].Start u.a. folgende Codezeile abgearbeitet:

Zitat:
procedure TAnimation.Start;
begin
...
if (Abs(FDuration) < 0.001) or (Root = nil) or (csDesigning in ComponentState) then
...
end;
Bei einer Form ist 'Root' z.B. 'TFormMain', bei einem Frame ist 'Root' allerdings = nil. In diesem Fall wird auch kein Thread zur zyklischen Animation erstellt, was dann wohl das eigentliche Problem ist.

Frage: Sind Animationen dieses Art in Frames nicht möglich??

Gruß,
Marc
  Mit Zitat antworten Zitat
kaju74

Registriert seit: 22. Okt 2003
178 Beiträge
 
#2

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 09:33
Aha, nächste Erkenntnis:

TCustomForm implementiert 'IRoot', TFrame nicht. Daher funktionieren Komponenten-basierte Animationen nicht in Frames. Na super...

Marc
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.714 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 09:40
Dann verwende eine Form. Die kannst Du in FMX ja genauso wie einen Frame verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 09:53
Kann ich so nicht wirklich nachvollziehen.

Ein Button auf einem Frame kann ich per FloatAnimation in der Höhe ändern.
Angehängte Dateien
Dateityp: zip dp_184615.zip (1,8 KB, 10x aufgerufen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
kaju74

Registriert seit: 22. Okt 2003
178 Beiträge
 
#5

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 09:56
Richtig - aber nicht, wenn Du eine Animation-Komponente verwendest. Die funktionieren nicht...

LG,
Marc
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
3.985 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 10:10
Richtig - aber nicht, wenn Du eine Animation-Komponente verwendest. Die funktionieren nicht...
QC Nr?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 10:48
Richtig - aber nicht, wenn Du eine Animation-Komponente verwendest. Die funktionieren nicht...

LG,
Marc
Ähm, TButton-Komponente auf Frame, TFloatAnimation-Komponente auf Frame und an den Button geklatscht ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 10:52
Aha, nächste Erkenntnis:

TCustomForm implementiert 'IRoot', TFrame nicht. Daher funktionieren Komponenten-basierte Animationen nicht in Frames. Na super...

Marc
Ein Frame kann kein Root sein warum sollte ein Frame also dann das Interface IRoot implementieren?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
kaju74

Registriert seit: 22. Okt 2003
178 Beiträge
 
#9

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 13:25
Interessant - mit TButton geht es. Und nun probiere es mal mit TRectangle und einer ColorKey-Animation. Die geht auf einer Form aber nicht in einem Frame.

Oder geht das bei Dir auch?

LG,
Marc
  Mit Zitat antworten Zitat
kaju74

Registriert seit: 22. Okt 2003
178 Beiträge
 
#10

AW: Firemonkey: Animationen in Frames?

  Alt 10. Apr 2015, 13:32
Also, das scheint irgendwie an der ColorKey-Animation zu liegen. Mit der Color-Animation geht's...

Das Problem scheint hier zu liegen:
Delphi-Quellcode:
procedure TColorKeyAnimation.ProcessAnimation;
var
  T: TRttiType;
  P: TRttiProperty;
  Key1, Key2: TKey;
begin
  if FInstance <> nil then
  begin
    if FKeys.FindKeys(NormalizedTime, Key1, Key2) then
    begin
      if (TFloatKey(Key2).Key - TFloatKey(Key1).Key) = 0 then
        Exit;
      T := SharedContext.GetType(FInstance.ClassInfo);
      if T <> nil then
      begin
        P := T.GetProperty(FPath);
        if (P <> nil) and P.PropertyType.IsOrdinal then
          P.SetValue(FInstance,
            InterpolateColor(TColorKey(Key1).Value, TColorKey(Key2).Value,
              (NormalizedTime - TFloatKey(Key1).Key) / (TFloatKey(Key2).Key - TFloatKey(Key1).Key)));
      end;
    end;
  end;
end;
Die Zeile:

if (TFloatKey(Key2).Key - TFloatKey(Key1).Key) = 0 then verhält sich in einer Form anders als in einem Frame. In einem Frame sind beide Werte = 0, sodaß mit "Exit" aus der Methode gesprungen wird. Bei einer Form nicht. Hier ist der erste Wert = 1 und der zweite = 0.

???

Gruß,
Marc

Geändert von kaju74 (10. Apr 2015 um 13:47 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf