2019-02-03 21:45:56 +08:00
|
|
|
|
// Copyright (C) 2019 Nomango
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "common.h"
|
|
|
|
|
|
|
2019-04-14 23:29:17 +08:00
|
|
|
|
// <20><>ɫ
|
|
|
|
|
|
KGE_DECLARE_SMART_PTR(Hero);
|
|
|
|
|
|
class Hero
|
2019-07-31 16:24:56 +08:00
|
|
|
|
: public GifSprite
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
|
|
|
|
|
public:
|
2019-07-31 16:24:56 +08:00
|
|
|
|
Hero(GifImagePtr image)
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ͼƬ
|
2019-07-31 16:24:56 +08:00
|
|
|
|
Load(image);
|
2019-04-14 23:29:17 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD> GIF <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
|
|
|
|
|
SetLoopCount(-1);
|
2019-02-03 21:45:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-03-18 15:00:58 +08:00
|
|
|
|
// ÿ֡<C3BF><D6A1>Ⱦǰִ<C7B0><D6B4> OnUpdate
|
2019-02-03 21:45:56 +08:00
|
|
|
|
void OnUpdate(Duration dt) override
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>豸
|
2019-07-30 15:27:01 +08:00
|
|
|
|
auto input = Input::Instance();
|
2019-04-14 23:29:17 +08:00
|
|
|
|
|
2019-02-03 21:45:56 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>
|
2019-07-30 15:27:01 +08:00
|
|
|
|
if (input->IsDown(KeyCode::Left))
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
|
|
|
|
|
this->Move(-2, 0);
|
|
|
|
|
|
}
|
2019-07-30 15:27:01 +08:00
|
|
|
|
else if (input->IsDown(KeyCode::Right))
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
|
|
|
|
|
this->Move(2, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
2019-07-30 15:27:01 +08:00
|
|
|
|
if (input->IsDown(KeyCode::Up))
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
|
|
|
|
|
this->Move(0, -2);
|
|
|
|
|
|
}
|
2019-07-30 15:27:01 +08:00
|
|
|
|
else if (input->IsDown(KeyCode::Down))
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
|
|
|
|
|
this->Move(0, 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-04-14 23:29:17 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳ʱ<CBB3><CAB1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ɫ
|
2019-07-30 15:27:01 +08:00
|
|
|
|
if (input->IsDown(MouseButton::Left))
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ת<EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
float rotation = this->GetRotation();
|
|
|
|
|
|
// <20><><EFBFBD>ýǶ<C3BD>ֵ+2
|
|
|
|
|
|
this->SetRotation(rotation + 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-04-14 23:29:17 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>ʾ<EFBFBD><CABE>ɫ
|
2019-07-30 15:27:01 +08:00
|
|
|
|
if (input->WasPressed(MouseButton::Right))
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ʾ״̬
|
|
|
|
|
|
bool visible = this->IsVisible();
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>෴<EFBFBD><E0B7B4><EFBFBD><EFBFBD>ʾ״̬
|
|
|
|
|
|
this->SetVisible(!visible);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class Demo2
|
|
|
|
|
|
: public Scene
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
2019-08-01 13:07:48 +08:00
|
|
|
|
static ScenePtr Create()
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
2019-08-01 13:07:48 +08:00
|
|
|
|
return new Demo2;
|
2019-02-03 21:45:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-08-01 13:07:48 +08:00
|
|
|
|
Demo2()
|
2019-02-03 21:45:56 +08:00
|
|
|
|
{
|
2019-04-14 23:29:17 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
2019-08-01 13:07:48 +08:00
|
|
|
|
HeroPtr hero = new Hero(g_Loader.GetGifImage(L"Kusanagi"));
|
2019-02-03 21:45:56 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>Ļ<EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD><EFBFBD><EFBFBD>ʾ
|
2019-04-14 23:29:17 +08:00
|
|
|
|
hero->SetAnchor(0.5f, 0.5f);
|
|
|
|
|
|
hero->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
|
2019-02-03 21:45:56 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2019-02-12 16:12:15 +08:00
|
|
|
|
TextPtr text = new Text(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><EFBFBD>ƶ<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
2019-03-10 13:44:02 +08:00
|
|
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD>СΪ<D0A1><CEAA><EFBFBD>ֲ<EFBFBD><D6B2>ִ<EFBFBD>С
|
|
|
|
|
|
text->SetSize(text->GetLayoutSize());
|
2019-02-03 21:45:56 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
text->SetAnchor(0.5f, 0.5f);
|
|
|
|
|
|
text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT - 50);
|
|
|
|
|
|
text->SetAlignment(TextAlign::Center);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
2019-04-14 23:29:17 +08:00
|
|
|
|
this->AddChild(hero);
|
2019-02-03 21:45:56 +08:00
|
|
|
|
this->AddChild(text);
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|