0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TouchGFXを使おう4~アニメーション~

Posted at

TouchGFXを使おう3~画面遷移編~の続きです。

今回は、アニメーションを作ってみましょう。

アニメーション

当初handleTickEventのみの予定でしたが、Youtubeに合わせた内容及びコードに変更しました。
TouchGFX入門:ウィジェットを移動 / アニメーション化する3つの方法

Movingwidget

image.png
Trigger:Button is clicked
Action:Move widget
を選択します。
image.png
次に、移動先を指定します。
Choose widget to move:画像
Positon:移動先
image.png
以上でボタンをクリックすることで移動するようになります。

handleTickEvent

今回は、image3を左から右へ移動させます。
image.png
handleTickEvent は、TouchGFXで コード生成後 、別途 コード修正 が必要になります。
今回は VisualStudioCode を使用していますが、STM32CubeIDE等 でも 可能 です。
Generate Code または Run Simulator で コードを生成し Files から 生成されたコード を開きます。
image.png
ファイル⇒フォルダーを開く からフォルダーを指定して開きます。
image.png
image.png
image.png

今回は、Screen1View.hppScreen1View.cppコード追加 します。

  • gui⇒include_gui⇒Screen1_screen⇒Screen1View.hpp
  • gui⇒src⇒Screen1_screen⇒Screen1View.cpp

最初に、Screen1View.hpphandleTickEvent追加 します。
さらに、カウンターを uint16_t追加 します。
image.png
Screen1View.hpp

public:
    virtual void handleTickEvent();
protected:
    uint16_t cntr = 0;

image.png
次に、Screen1View.cpp動作内容追加 します。
image3 の表示をするため、最初に invalidate を行い
次に、setXX座標指定 します。

void Screen1View::handleTickEvent()
{
    if(cntr<900)
    {
        image3.setX(cntr -100);
        cntr++;
    }else{
        cntr=0;
    }
    image3.invalidate();
}

以上で、指定位置まで移動するプログラムが完成しました。

FlexButton

次はFlexButtonを使い、クリックすることで動作するボタンを製作します。
最初に透明なボタンを作ります。
Buttons から FlexButton選択 します。
image.png
image.png
image.png
W、H0 にします。
0にすることで FlexButton画面から消す ことができます。
image.png
画面から見えなくなりました。
image.png

MoveAnimator

移動させるimageの MixinsMoveAnimatorチェック を入れます。
image.png
次に Interactions追加 します。
image.png
TriggerButton is clicked
CHoose clicked sourceflexButton1
ActionCall new virtual function
にします。
image.png

非表示化

次に今回、移動させる move_image を一度 見えなく します。
👁アイコン非表示 にします。
image.png
表示させるときは

image.setVisible(true);

で表示させます。

コード追加

ここでコード生成を行い以下を追加します。
TouchGFX\gui\include\gui\screen1_screen\Screen1View.hpp

virtual void function1();

TouchGFX\gui\src\screen1_screen\Screen1View.cpp

void Screen1View::function1()
{
    move_image.setVisible(true);
    move_image.clearMoveAnimationEndedAction();
    move_image.startMoveAnimation(50 , 300, 300, touchgfx::EasingEquations::linearEaseNone, touchgfx::EasingEquations::linearEaseOut);
}

image.png
image.png
コンパイルすることでボタンをクリックすると画像が表示され移動します。

TouchGFXを使おう4~画面遷移編~に続きます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?