ハンバーガーメニュー
https://scrapbox.io/files/6464ec6459af29001b41104a.png
使い方
draw(RectF 四角,bool 値,ColorF 色:省略可,const ColorF 線の色:省略可) ;
value(); トランジションの値を返す。
コード
code:ハンバーガーメニュー.cpp
# include <Siv3D.hpp>
class HamburgerMenu {
Transition transition{ 0.2s,0.2s };
public:
void draw(const RectF& rect,bool& flag,const ColorF& color=Palette::White,const ColorF& backColor=Palette::Black) {
const RectF r = rect.scaled(0.5);
const Vec2 tl = r.tl(), bl = r.bl(), tr = r.tr(), br = r.br();
flag ^= rect.draw(color).leftClicked();
transition.update(flag);
const double t = transition.value();
Line{ tl.lerp(bl,t),tr }.draw(2,backColor);
Line{ bl.lerp(tl,t),br }.draw(2,backColor);
Line{ (tl + bl) / 2,(tr + br) / 2 }.draw(2, ColorF{ backColor,1 - t });
}
double value(){
return transition.value();
}
};
void Main()
{
HamburgerMenu menu;
bool flag=false;
while (System::Update())
{
RectF{ (menu.value()-1)*200,0,200,600}.draw();
menu.draw({ 0,0,50 }, flag);
}
}