자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey 10.2 Tokyo에서 TFrame등의 Animation 문제 해결방법.
2017.12.29 13:46
10.2 Tokyo에서 TFrame등의 Animation에 문제가 있습니다...
보통 프레임을 에니메이션으로 띄울 때 이렇게 하는데...
var
fr: TFrame1;
fr := TConfigFR.Create(Self);
fr.Position.X := -fr.Width;
TAnimator.AnimateFloat(fr, 'Position.X', 0, 0.5);
프레임을 띄울 때는 문제없이 에니메이션으로 잘 뜬다....
(왼쪽에서 오른쪽으로 나타난다....)
그러나 프레임을 해제할 때는 에니메이션이 안 되고 그냥 폼 Close 되듯이 사라진다...
TAnimator.AnimateFloat(fr, 'Position.X', 0, 0.5); // 왼쪽에서 오른쪽을 사라진다...
fr.Dispose;
그런데 이 코드는 베를린까지는 아무 문제가 없었는데 10.2에서부터는 문제가 있다....
오류가 발생하는 것이 아니라 그냥 폼 사라지듯이 사라진다...
분명 에니메이션으로 사라지도록 했는데.....
열심히 구글링을 해서 해결방법을 찾았는데 버그라고 하네요....
이런 질문이들 없는 것 보니 아마 프레임을 에니메이션으로 띄우지는 않나 봅니다..
근데 이 문제는 프레임 뿐만 아니라 Rectangle, Layout, Panel등에서도 동일한 현상이 나타납니다..
개인적으로 10.2의 버전 명이 참 맘에 안드는데....
아래 사이트에 해결 방법이 자세히 설명되어 있으니 혹시 위 현상이 나타나는 분들은 참고하십시오..
https://blog.naver.com/seejune66/221173617729
질문으로 올리려다 방법을 찾아 해결이 됐기 때문에 해결방법까지 올립니다...
감사합니다....
댓글 5
-
험프리
2017.12.29 16:30
-
험프리
2017.12.29 16:53
남겨주신 내용을 살펴보니 다음 링크의 내용으로 해결하신 것 같습니다.
http://delphiworlds.com/2017/12/android-app-hang-fix/
제가 봤을때는 상황이 약간 다른 것 같은데요. 제가 말씀드린 (더 간단한 처리방법)내용도 한번 검토해 보시기 바랍니다.
-
푸른솔
2017.12.29 17:48
제가 걸어논 링크가 좀 이상했네요...
다시 수정했습니다....
AnimateFloatWait 함수를 사용하면 윈도에서는 잘 됩니다만 안드로이드에서는 먹통이 됩니다...
이 함수가 안드로이드에서 먹통되는 것이 버그라고 하네요.... 이 사항을 모르면 상당히 답답할 겁니다...
버그없이 잘 동작되었더라면 쉽게 해결이 됐을 텐데 버그로 인해 상당히 헤매게 됐습니다...
결국 이 사이트를 보고 해결을 했습니다만...
http://delphiworlds.com/2017/12/android-app-hang-fix/
////
TAnimator.AnimateFloat(fr, 'Position.X', 0, 0.5); // 왼쪽에서 오른쪽을 사라진다...
fr.Dispose;
위 코드는 베를린까지는 아무 문제없이 잘 돌아가는 코드였습니다..
10.2에서 갑자기 안되니 코드의 의심보다는 델파이를 먼저 의심하게 되는 것이지요...
이 대목에서 한 번 헤메고...
AnimateFloatWait 이 함수의 버그로 인해 또 한 번 헤메고.......
AnimateFloatWait 함수의 버그가 패치되기까지는 위 사이트대로 임시 조치할 수밖에는 없을 것 같습니다....
10.2 버전이 적응하기가 좀.....
혹시 또 고생하시는 분들이 있을까해서 포스팅하였습니다....
-
험프리
2018.01.16 10:43
남겨주신 답변이 큰 도움이 되었네요^^
http://tech.devgear.co.kr/index.php?mid=delphi_qna&document_srl=439103&rnd=439110#comment_439110
-
험프리
2018.02.20 15:07
해당 이슈는 다음 핫픽스에서 해결되었습니다.
http://tech.devgear.co.kr/delphi_news/439696
Firemonkey 10.2 Tokyo에서 TFrame등의 Animation 문제 해결방법.
2017.12.29 13:46
10.2 Tokyo에서 TFrame등의 Animation에 문제가 있습니다...
보통 프레임을 에니메이션으로 띄울 때 이렇게 하는데...
var
fr: TFrame1;
fr := TConfigFR.Create(Self);
fr.Position.X := -fr.Width;
TAnimator.AnimateFloat(fr, 'Position.X', 0, 0.5);
프레임을 띄울 때는 문제없이 에니메이션으로 잘 뜬다....
(왼쪽에서 오른쪽으로 나타난다....)
그러나 프레임을 해제할 때는 에니메이션이 안 되고 그냥 폼 Close 되듯이 사라진다...
TAnimator.AnimateFloat(fr, 'Position.X', 0, 0.5); // 왼쪽에서 오른쪽을 사라진다...
fr.Dispose;
그런데 이 코드는 베를린까지는 아무 문제가 없었는데 10.2에서부터는 문제가 있다....
오류가 발생하는 것이 아니라 그냥 폼 사라지듯이 사라진다...
분명 에니메이션으로 사라지도록 했는데.....
열심히 구글링을 해서 해결방법을 찾았는데 버그라고 하네요....
이런 질문이들 없는 것 보니 아마 프레임을 에니메이션으로 띄우지는 않나 봅니다..
근데 이 문제는 프레임 뿐만 아니라 Rectangle, Layout, Panel등에서도 동일한 현상이 나타납니다..
개인적으로 10.2의 버전 명이 참 맘에 안드는데....
아래 사이트에 해결 방법이 자세히 설명되어 있으니 혹시 위 현상이 나타나는 분들은 참고하십시오..
https://blog.naver.com/seejune66/221173617729
질문으로 올리려다 방법을 찾아 해결이 됐기 때문에 해결방법까지 올립니다...
감사합니다....
댓글 5
-
험프리
2017.12.29 16:30
-
험프리
2017.12.29 16:53
남겨주신 내용을 살펴보니 다음 링크의 내용으로 해결하신 것 같습니다.
http://delphiworlds.com/2017/12/android-app-hang-fix/
제가 봤을때는 상황이 약간 다른 것 같은데요. 제가 말씀드린 (더 간단한 처리방법)내용도 한번 검토해 보시기 바랍니다.
-
푸른솔
2017.12.29 17:48
제가 걸어논 링크가 좀 이상했네요...
다시 수정했습니다....
AnimateFloatWait 함수를 사용하면 윈도에서는 잘 됩니다만 안드로이드에서는 먹통이 됩니다...
이 함수가 안드로이드에서 먹통되는 것이 버그라고 하네요.... 이 사항을 모르면 상당히 답답할 겁니다...
버그없이 잘 동작되었더라면 쉽게 해결이 됐을 텐데 버그로 인해 상당히 헤매게 됐습니다...
결국 이 사이트를 보고 해결을 했습니다만...
http://delphiworlds.com/2017/12/android-app-hang-fix/
////
TAnimator.AnimateFloat(fr, 'Position.X', 0, 0.5); // 왼쪽에서 오른쪽을 사라진다...
fr.Dispose;
위 코드는 베를린까지는 아무 문제없이 잘 돌아가는 코드였습니다..
10.2에서 갑자기 안되니 코드의 의심보다는 델파이를 먼저 의심하게 되는 것이지요...
이 대목에서 한 번 헤메고...
AnimateFloatWait 이 함수의 버그로 인해 또 한 번 헤메고.......
AnimateFloatWait 함수의 버그가 패치되기까지는 위 사이트대로 임시 조치할 수밖에는 없을 것 같습니다....
10.2 버전이 적응하기가 좀.....
혹시 또 고생하시는 분들이 있을까해서 포스팅하였습니다....
-
험프리
2018.01.16 10:43
남겨주신 답변이 큰 도움이 되었네요^^
http://tech.devgear.co.kr/index.php?mid=delphi_qna&document_srl=439103&rnd=439110#comment_439110
-
험프리
2018.02.20 15:07
해당 이슈는 다음 핫픽스에서 해결되었습니다.
http://tech.devgear.co.kr/delphi_news/439696
제 의견은 작성자님과 약간 다릅니다.^^
TAnimator.AnimateFloat 메소드의 경우 비동기로 실행됩니다.
해당 메소드 다음에 바로 DisposeOf 메소드 호출 시 애니메이션이 실행되더라도 해당 객체를 해제합니다.
즉, 애니메이션 도중 사라질 수 있습니다.
(어쩌면 메모리 참조 에러가 발생할 수도 있을 것 같습니다. 메모리 참조가 안나는 것으로 보아 애니메이션 내부에 예외처리가 된것으로 보입니다. 확인은 안해봤습니다.)
좀더 좋은 방법은로는 아래와 같이 AnimateFloatWait 메소드를 사용해서 테스트 해보시기 바랍니다.
TAnimator.AnimateFloatWait(fr, 'Position.X', 0, 0.5); // 왼쪽에서 오른쪽을 사라진다...
fr.Dispose;
AnimateFloatWait는 애니메이션이 끝날때까지 기다렸다가 다음 라인을 실행합니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)