add samples
This commit is contained in:
parent
5a4279c15c
commit
70a5aff6e9
|
|
@ -1,12 +1,13 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 2013
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 12.0.21005.1
|
VisualStudioVersion = 15.0.28307.271
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloWorld", "HelloWorld\HelloWorld.vcxproj", "{3561A359-F9FD-48AB-A977-34E7E568BC8E}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloWorld", "HelloWorld\HelloWorld.vcxproj", "{3561A359-F9FD-48AB-A977-34E7E568BC8E}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Easy2D", "Easy2D\Easy2D.vcxproj", "{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Easy2D", "Easy2D\Easy2D.vcxproj", "{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Samples", "Samples\Samples.vcxproj", "{45F5738D-CDF2-4024-974D-25B64F9043DE}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
|
|
@ -15,6 +16,14 @@ Global
|
||||||
Release|x64 = Release|x64
|
Release|x64 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|x64.Build.0 = Release|x64
|
||||||
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.ActiveCfg = Debug|Win32
|
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.Build.0 = Debug|Win32
|
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.Deploy.0 = Debug|Win32
|
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.Deploy.0 = Debug|Win32
|
||||||
|
|
@ -25,14 +34,14 @@ Global
|
||||||
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Release|Win32.Build.0 = Release|Win32
|
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Release|Win32.Build.0 = Release|Win32
|
||||||
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Release|x64.ActiveCfg = Release|x64
|
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Release|x64.ActiveCfg = Release|x64
|
||||||
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Release|x64.Build.0 = Release|x64
|
{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Release|x64.Build.0 = Release|x64
|
||||||
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|Win32.ActiveCfg = Debug|Win32
|
{45F5738D-CDF2-4024-974D-25B64F9043DE}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|Win32.Build.0 = Debug|Win32
|
{45F5738D-CDF2-4024-974D-25B64F9043DE}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|x64.ActiveCfg = Debug|x64
|
{45F5738D-CDF2-4024-974D-25B64F9043DE}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|x64.Build.0 = Debug|x64
|
{45F5738D-CDF2-4024-974D-25B64F9043DE}.Debug|x64.Build.0 = Debug|x64
|
||||||
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|Win32.ActiveCfg = Release|Win32
|
{45F5738D-CDF2-4024-974D-25B64F9043DE}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|Win32.Build.0 = Release|Win32
|
{45F5738D-CDF2-4024-974D-25B64F9043DE}.Release|Win32.Build.0 = Release|Win32
|
||||||
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|x64.ActiveCfg = Release|x64
|
{45F5738D-CDF2-4024-974D-25B64F9043DE}.Release|x64.ActiveCfg = Release|x64
|
||||||
{3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|x64.Build.0 = Release|x64
|
{45F5738D-CDF2-4024-974D-25B64F9043DE}.Release|x64.Build.0 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
// Copyright (C) 2019 Nomango
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
class Demo1
|
||||||
|
: public Scene
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static ScenePtr Create()
|
||||||
|
{
|
||||||
|
return new Demo1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Demo1()
|
||||||
|
{
|
||||||
|
// 创建文本
|
||||||
|
auto text = E_NEW Text(L"Hello Easy2D!");
|
||||||
|
// 让文本显示在屏幕中央
|
||||||
|
text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
|
||||||
|
text->SetAnchor(0.5, 0.5);
|
||||||
|
// 添加到场景
|
||||||
|
this->AddChild(text);
|
||||||
|
|
||||||
|
// 执行动画
|
||||||
|
text->AddAction(
|
||||||
|
Tween::Spawn({ // Action5: 同时执行 Action1 和 Action4, 并无限循环
|
||||||
|
Tween::RotateBy(60).SetDuration(1000), // Action1: 1秒旋转 60 度
|
||||||
|
Tween::Sequence({ // Action4: 顺序执行 Action2 和 Action3
|
||||||
|
Tween::FadeOut(500), // Action2: 500毫秒淡出动画
|
||||||
|
Tween::FadeIn(500) // Action3: 500毫秒淡入动画
|
||||||
|
})
|
||||||
|
}).SetLoopCount(-1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
// Copyright (C) 2019 Nomango
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
class Man
|
||||||
|
: public Sprite
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Man()
|
||||||
|
{
|
||||||
|
// 加载图片
|
||||||
|
Load(L"res/man.png");
|
||||||
|
// 缩小图片
|
||||||
|
SetScale(0.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 每帧更新时
|
||||||
|
void OnUpdate(Duration dt) override
|
||||||
|
{
|
||||||
|
// 获取输入设备
|
||||||
|
auto input = Input::Instance();
|
||||||
|
// 按下左右键
|
||||||
|
if (input->IsDown(KeyCode::Left))
|
||||||
|
{
|
||||||
|
this->Move(-2, 0);
|
||||||
|
}
|
||||||
|
else if (input->IsDown(KeyCode::Right))
|
||||||
|
{
|
||||||
|
this->Move(2, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按下上下键
|
||||||
|
if (input->IsDown(KeyCode::Up))
|
||||||
|
{
|
||||||
|
this->Move(0, -2);
|
||||||
|
}
|
||||||
|
else if (input->IsDown(KeyCode::Down))
|
||||||
|
{
|
||||||
|
this->Move(0, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按下鼠标左键,顺时针旋转小人
|
||||||
|
if (input->IsDown(MouseButton::Left))
|
||||||
|
{
|
||||||
|
// 获取当前旋转角度
|
||||||
|
float rotation = this->GetRotation();
|
||||||
|
// 设置角度值+2
|
||||||
|
this->SetRotation(rotation + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击鼠标右键,隐藏或显示小人
|
||||||
|
if (input->WasPressed(MouseButton::Right))
|
||||||
|
{
|
||||||
|
// 获取当前显示状态
|
||||||
|
bool visible = this->IsVisible();
|
||||||
|
// 设置相反的显示状态
|
||||||
|
this->SetVisible(!visible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Demo2
|
||||||
|
: public Scene
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static ScenePtr Create()
|
||||||
|
{
|
||||||
|
return new Demo2;
|
||||||
|
}
|
||||||
|
|
||||||
|
Demo2()
|
||||||
|
{
|
||||||
|
// 创建人物
|
||||||
|
auto man = E_NEW Man;
|
||||||
|
// 在屏幕上居中显示
|
||||||
|
man->SetAnchor(0.5f, 0.5f);
|
||||||
|
man->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
|
||||||
|
|
||||||
|
// 创建说明文字
|
||||||
|
auto text = E_NEW Text(L"按上下左右键移动\n按鼠标左键旋转\n点击鼠标右键隐藏");
|
||||||
|
// 设置文字位置
|
||||||
|
text->SetAnchor(0.5f, 0.5f);
|
||||||
|
text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT - 50);
|
||||||
|
text->SetAlignment(TextAlign::Center);
|
||||||
|
|
||||||
|
// 添加到场景
|
||||||
|
this->AddChild(man);
|
||||||
|
this->AddChild(text);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
// Copyright (C) 2019 Nomango
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
class Demo3
|
||||||
|
: public Scene
|
||||||
|
{
|
||||||
|
MusicPtr music; // 音乐对象
|
||||||
|
TextPtr volume_text; // 音量文字
|
||||||
|
TextPtr state_text; // 播放状态文字
|
||||||
|
|
||||||
|
public:
|
||||||
|
static ScenePtr Create()
|
||||||
|
{
|
||||||
|
return new Demo3;
|
||||||
|
}
|
||||||
|
|
||||||
|
Demo3()
|
||||||
|
{
|
||||||
|
// 加载音乐
|
||||||
|
music = E_NEW Music;
|
||||||
|
if (!music->Load(L"res/music.wav"))
|
||||||
|
{
|
||||||
|
music = nullptr;
|
||||||
|
|
||||||
|
auto err = E_NEW Text(L"音频文件加载失败");
|
||||||
|
this->AddChild(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 播放音乐(参数用来设置播放循环次数,-1 表示循环播放)
|
||||||
|
music->Play(-1);
|
||||||
|
|
||||||
|
// 创建说明文字
|
||||||
|
auto intro_text = E_NEW Text(L"按上下键调整音量\n按空格键暂停或继续");
|
||||||
|
intro_text->SetAnchor(0.5f, 0.5f);
|
||||||
|
intro_text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 - 50);
|
||||||
|
|
||||||
|
// 创建音量文字
|
||||||
|
volume_text = E_NEW Text(L"当前音量:");
|
||||||
|
volume_text->SetAnchor(0.5f, 0.5f);
|
||||||
|
volume_text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 + 30);
|
||||||
|
|
||||||
|
// 创建状态文字
|
||||||
|
state_text = E_NEW Text(L"当前状态:");
|
||||||
|
state_text->SetAnchor(0.5f, 0.5f);
|
||||||
|
state_text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 + 60);
|
||||||
|
|
||||||
|
// 添加到场景
|
||||||
|
this->AddChild(intro_text);
|
||||||
|
this->AddChild(volume_text);
|
||||||
|
this->AddChild(state_text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnUpdate(Duration dt) override
|
||||||
|
{
|
||||||
|
if (music == nullptr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// 获取音量和播放状态
|
||||||
|
float volume = music->GetVolume();
|
||||||
|
bool playing = music->IsPlaying();
|
||||||
|
|
||||||
|
// 修改文本
|
||||||
|
volume_text->SetText(L"当前音量:" + std::to_wstring(volume));
|
||||||
|
state_text->SetText(playing ? L"当前状态:正在播放" : L"当前状态:停止播放");
|
||||||
|
|
||||||
|
// 获取输入设备
|
||||||
|
auto input = Input::Instance();
|
||||||
|
|
||||||
|
// 按空格键暂停或继续
|
||||||
|
if (input->WasPressed(KeyCode::Space))
|
||||||
|
{
|
||||||
|
music->IsPlaying() ? music->Pause() : music->Resume();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按上下键调整音量
|
||||||
|
if (input->WasPressed(KeyCode::Up))
|
||||||
|
{
|
||||||
|
music->SetVolume(volume + 0.1f);
|
||||||
|
}
|
||||||
|
else if (input->WasPressed(KeyCode::Down))
|
||||||
|
{
|
||||||
|
music->SetVolume(volume - 0.1f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,153 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>15.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{45F5738D-CDF2-4024-974D-25B64F9043DE}</ProjectGuid>
|
||||||
|
<RootNamespace>Samples</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>../../src</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>../../src</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>../../src</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>../../src</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="main.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="common.h" />
|
||||||
|
<ClInclude Include="Demo1.h" />
|
||||||
|
<ClInclude Include="Demo2.h" />
|
||||||
|
<ClInclude Include="Demo3.h" />
|
||||||
|
<ClInclude Include="include-forwards.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Easy2D\Easy2D.vcxproj">
|
||||||
|
<Project>{ff7f943d-a89c-4e6c-97cf-84f7d8ff8edf}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="main.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="include-forwards.h" />
|
||||||
|
<ClInclude Include="Demo1.h" />
|
||||||
|
<ClInclude Include="common.h" />
|
||||||
|
<ClInclude Include="Demo2.h" />
|
||||||
|
<ClInclude Include="Demo3.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
// Copyright (C) 2019 Nomango
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "easy2d.h"
|
||||||
|
|
||||||
|
using namespace easy2d;
|
||||||
|
|
||||||
|
const int WINDOW_WIDTH = 640;
|
||||||
|
const int WINDOW_HEIGHT = 480;
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
// Copyright (C) 2019 Nomango
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "common.h"
|
||||||
|
#include "Demo1.h"
|
||||||
|
#include "Demo2.h"
|
||||||
|
#include "Demo3.h"
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
// Copyright (C) 2019 Nomango
|
||||||
|
|
||||||
|
#include "include-forwards.h"
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
struct Demo
|
||||||
|
{
|
||||||
|
String title;
|
||||||
|
ScenePtr(*Create)();
|
||||||
|
};
|
||||||
|
|
||||||
|
Demo s_Demos[] = {
|
||||||
|
{ L"动画示例", Demo1::Create },
|
||||||
|
{ L"输入示例", Demo2::Create },
|
||||||
|
{ L"音频播放示例", Demo3::Create },
|
||||||
|
};
|
||||||
|
int s_DemoIndex = 0;
|
||||||
|
int s_DemoNum = sizeof(s_Demos) / sizeof(Demo);
|
||||||
|
}
|
||||||
|
|
||||||
|
class DemoApp
|
||||||
|
: public Application
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DemoApp()
|
||||||
|
{
|
||||||
|
Options options;
|
||||||
|
options.title = L"Easy2D示例程序";
|
||||||
|
options.width = WINDOW_WIDTH;
|
||||||
|
options.height = WINDOW_HEIGHT;
|
||||||
|
|
||||||
|
Init(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnStart() override
|
||||||
|
{
|
||||||
|
ChangeDemoScene();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChangeDemoScene()
|
||||||
|
{
|
||||||
|
Window::Instance()->SetTitle(s_Demos[s_DemoIndex].title);
|
||||||
|
|
||||||
|
ScenePtr scene = s_Demos[s_DemoIndex].Create();
|
||||||
|
EnterScene(scene);
|
||||||
|
|
||||||
|
// 添加按键监听
|
||||||
|
scene->AddListener(KeyboardEvent::Up, Closure(this, &DemoApp::KeyPressed));
|
||||||
|
|
||||||
|
// 显示提示文字
|
||||||
|
TextPtr intro = new Text(L"Key 1~3 to select demo");
|
||||||
|
intro->SetFontSize(16.f);
|
||||||
|
scene->AddChild(intro);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeyPressed(Event const& evt)
|
||||||
|
{
|
||||||
|
E2D_ASSERT(evt.type == KeyboardEvent::Up);
|
||||||
|
|
||||||
|
if (evt.key.code > KeyCode::Num0 &&
|
||||||
|
evt.key.code <= (KeyCode::Num0 + s_DemoNum))
|
||||||
|
{
|
||||||
|
s_DemoIndex = evt.key.code - KeyCode::Num1;
|
||||||
|
ChangeDemoScene();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DemoApp app;
|
||||||
|
app.Run();
|
||||||
|
}
|
||||||
|
catch (std::exception& e)
|
||||||
|
{
|
||||||
|
::MessageBoxA(nullptr, e.what(), "An exception has occurred!", MB_ICONERROR | MB_TASKMODAL);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 702 KiB |
Binary file not shown.
|
|
@ -154,6 +154,13 @@ namespace easy2d
|
||||||
Window::Instance()->Destroy();
|
Window::Instance()->Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Application::Destroy()
|
||||||
|
{
|
||||||
|
transition_ = nullptr;
|
||||||
|
next_scene_ = nullptr;
|
||||||
|
curr_scene_ = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void Application::EnterScene(ScenePtr const & scene)
|
void Application::EnterScene(ScenePtr const & scene)
|
||||||
{
|
{
|
||||||
E2D_ASSERT(scene && "Application::EnterScene failed, NULL pointer exception");
|
E2D_ASSERT(scene && "Application::EnterScene failed, NULL pointer exception");
|
||||||
|
|
@ -218,6 +225,8 @@ namespace easy2d
|
||||||
next_scene_ = nullptr;
|
next_scene_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OnUpdate(dt);
|
||||||
|
|
||||||
if (curr_scene_)
|
if (curr_scene_)
|
||||||
curr_scene_->Update(dt);
|
curr_scene_->Update(dt);
|
||||||
|
|
||||||
|
|
@ -284,7 +293,7 @@ namespace easy2d
|
||||||
if (!app->transition_ && app->curr_scene_)
|
if (!app->transition_ && app->curr_scene_)
|
||||||
{
|
{
|
||||||
Event evt((msg == WM_KEYDOWN) ? KeyboardEvent::Down : KeyboardEvent::Up);
|
Event evt((msg == WM_KEYDOWN) ? KeyboardEvent::Down : KeyboardEvent::Up);
|
||||||
evt.key.code = KeyCode(wparam);
|
evt.key.code = static_cast<int>(wparam);
|
||||||
evt.key.count = static_cast<int>(lparam & 0xFF);
|
evt.key.count = static_cast<int>(lparam & 0xFF);
|
||||||
|
|
||||||
app->curr_scene_->Dispatch(evt);
|
app->curr_scene_->Dispatch(evt);
|
||||||
|
|
|
||||||
|
|
@ -74,12 +74,18 @@ namespace easy2d
|
||||||
// 销毁时
|
// 销毁时
|
||||||
virtual void OnDestroy() {}
|
virtual void OnDestroy() {}
|
||||||
|
|
||||||
|
// 更新时
|
||||||
|
virtual void OnUpdate(Duration dt) { E2D_NOT_USED(dt); }
|
||||||
|
|
||||||
// 运行
|
// 运行
|
||||||
void Run();
|
void Run();
|
||||||
|
|
||||||
// 结束
|
// 结束
|
||||||
void Quit();
|
void Quit();
|
||||||
|
|
||||||
|
// 销毁
|
||||||
|
void Destroy();
|
||||||
|
|
||||||
// 切换场景
|
// 切换场景
|
||||||
void EnterScene(
|
void EnterScene(
|
||||||
ScenePtr const& scene /* 场景 */
|
ScenePtr const& scene /* 场景 */
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ namespace easy2d
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
MouseButton button; // 仅当消息类型为 Down | Up | Click 时有效
|
int button; // 仅当消息类型为 Down | Up | Click 时有效
|
||||||
};
|
};
|
||||||
|
|
||||||
struct
|
struct
|
||||||
|
|
@ -79,7 +79,7 @@ namespace easy2d
|
||||||
Last
|
Last
|
||||||
};
|
};
|
||||||
|
|
||||||
KeyCode code;
|
int code; // enum KeyCode
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
static inline bool Check(UINT type)
|
static inline bool Check(UINT type)
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ namespace easy2d
|
||||||
public:
|
public:
|
||||||
Font(
|
Font(
|
||||||
const String& family = L"",
|
const String& family = L"",
|
||||||
float size = 22,
|
float size = 18,
|
||||||
unsigned int weight = FontWeight::Normal,
|
unsigned int weight = FontWeight::Normal,
|
||||||
bool italic = false
|
bool italic = false
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -72,34 +72,22 @@ namespace easy2d
|
||||||
want_update_ = true;
|
want_update_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Input::IsDown(KeyCode code)
|
bool Input::IsDown(int code_or_btn)
|
||||||
{
|
{
|
||||||
return keys_[static_cast<int>(code)];
|
E2D_ASSERT(code_or_btn >= 0 && code_or_btn < 256);
|
||||||
|
return keys_[code_or_btn];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Input::IsDown(MouseButton btn)
|
bool Input::WasPressed(int code_or_btn)
|
||||||
{
|
{
|
||||||
return keys_[static_cast<int>(btn)];
|
E2D_ASSERT(code_or_btn >= 0 && code_or_btn < 256);
|
||||||
|
return keys_pressed_[code_or_btn];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Input::WasPressed(KeyCode code)
|
bool Input::WasReleased(int code_or_btn)
|
||||||
{
|
{
|
||||||
return keys_pressed_[static_cast<int>(code)];
|
E2D_ASSERT(code_or_btn >= 0 && code_or_btn < 256);
|
||||||
}
|
return keys_released_[code_or_btn];
|
||||||
|
|
||||||
bool Input::WasPressed(MouseButton btn)
|
|
||||||
{
|
|
||||||
return keys_pressed_[static_cast<int>(btn)];
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Input::WasReleased(KeyCode code)
|
|
||||||
{
|
|
||||||
return keys_released_[static_cast<int>(code)];
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Input::WasReleased(MouseButton btn)
|
|
||||||
{
|
|
||||||
return keys_released_[static_cast<int>(btn)];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float Input::GetMouseX()
|
float Input::GetMouseX()
|
||||||
|
|
|
||||||
|
|
@ -31,34 +31,19 @@ namespace easy2d
|
||||||
E2D_DECLARE_SINGLETON(Input);
|
E2D_DECLARE_SINGLETON(Input);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// 检测键盘按键是否正被按下
|
// 检测键盘或鼠标按键是否正被按下
|
||||||
bool IsDown(
|
bool IsDown(
|
||||||
KeyCode code
|
int code_or_btn
|
||||||
);
|
);
|
||||||
|
|
||||||
// 检测鼠标按键是否正被按下
|
// 检测键盘或鼠标按键是否刚被点击
|
||||||
bool IsDown(
|
|
||||||
MouseButton btn
|
|
||||||
);
|
|
||||||
|
|
||||||
// 检测键盘按键是否刚被点击
|
|
||||||
bool WasPressed(
|
bool WasPressed(
|
||||||
KeyCode code
|
int code_or_btn
|
||||||
);
|
);
|
||||||
|
|
||||||
// 检测鼠标按键是否刚被点击
|
// 检测键盘或鼠标按键是否刚抬起
|
||||||
bool WasPressed(
|
|
||||||
MouseButton btn
|
|
||||||
);
|
|
||||||
|
|
||||||
// 检测键盘按键是否刚抬起
|
|
||||||
bool WasReleased(
|
bool WasReleased(
|
||||||
KeyCode code
|
int code_or_btn
|
||||||
);
|
|
||||||
|
|
||||||
// 检测鼠标按键是否刚抬起
|
|
||||||
bool WasReleased(
|
|
||||||
MouseButton btn
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// 資誼報炎 x 恫炎
|
// 資誼報炎 x 恫炎
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ namespace easy2d
|
||||||
String const& family
|
String const& family
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置字号(默认值为 22)
|
// 设置字号(默认值为 18)
|
||||||
void SetFontSize(
|
void SetFontSize(
|
||||||
float size
|
float size
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -24,88 +24,98 @@
|
||||||
namespace easy2d
|
namespace easy2d
|
||||||
{
|
{
|
||||||
// 報炎梓囚
|
// 報炎梓囚
|
||||||
enum class MouseButton : int
|
struct MouseButton
|
||||||
{
|
{
|
||||||
Left = VK_LBUTTON, // 報炎恣囚
|
typedef int Value;
|
||||||
Right = VK_RBUTTON, // 報炎嘔囚
|
|
||||||
Middle = VK_MBUTTON // 報炎嶄囚
|
enum : int
|
||||||
|
{
|
||||||
|
Left = VK_LBUTTON, // 報炎恣囚
|
||||||
|
Right = VK_RBUTTON, // 報炎嘔囚
|
||||||
|
Middle = VK_MBUTTON // 報炎嶄囚
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 梓囚囚峙
|
// 梓囚囚峙
|
||||||
enum class KeyCode : int
|
struct KeyCode
|
||||||
{
|
{
|
||||||
Unknown = 0,
|
typedef int Value;
|
||||||
Up = VK_UP,
|
|
||||||
Left = VK_LEFT,
|
|
||||||
Right = VK_RIGHT,
|
|
||||||
Down = VK_DOWN,
|
|
||||||
Enter = VK_RETURN,
|
|
||||||
Space = VK_SPACE,
|
|
||||||
Esc = VK_ESCAPE,
|
|
||||||
Ctrl = VK_CONTROL,
|
|
||||||
Shift = VK_SHIFT,
|
|
||||||
|
|
||||||
A = 0x41,
|
enum : int
|
||||||
B,
|
{
|
||||||
C,
|
Unknown = 0,
|
||||||
D,
|
Up = VK_UP,
|
||||||
E,
|
Left = VK_LEFT,
|
||||||
F,
|
Right = VK_RIGHT,
|
||||||
G,
|
Down = VK_DOWN,
|
||||||
H,
|
Enter = VK_RETURN,
|
||||||
I,
|
Space = VK_SPACE,
|
||||||
J,
|
Esc = VK_ESCAPE,
|
||||||
K,
|
Ctrl = VK_CONTROL,
|
||||||
L,
|
Shift = VK_SHIFT,
|
||||||
M,
|
|
||||||
N,
|
|
||||||
O,
|
|
||||||
P,
|
|
||||||
Q,
|
|
||||||
R,
|
|
||||||
S,
|
|
||||||
T,
|
|
||||||
U,
|
|
||||||
V,
|
|
||||||
W,
|
|
||||||
X,
|
|
||||||
Y,
|
|
||||||
Z,
|
|
||||||
|
|
||||||
Num0 = 0x30,
|
A = 0x41,
|
||||||
Num1,
|
B,
|
||||||
Num2,
|
C,
|
||||||
Num3,
|
D,
|
||||||
Num4,
|
E,
|
||||||
Num5,
|
F,
|
||||||
Num6,
|
G,
|
||||||
Num7,
|
H,
|
||||||
Num8,
|
I,
|
||||||
Num9,
|
J,
|
||||||
|
K,
|
||||||
|
L,
|
||||||
|
M,
|
||||||
|
N,
|
||||||
|
O,
|
||||||
|
P,
|
||||||
|
Q,
|
||||||
|
R,
|
||||||
|
S,
|
||||||
|
T,
|
||||||
|
U,
|
||||||
|
V,
|
||||||
|
W,
|
||||||
|
X,
|
||||||
|
Y,
|
||||||
|
Z,
|
||||||
|
|
||||||
Numpad0 = VK_NUMPAD0,
|
Num0 = 0x30,
|
||||||
Numpad1,
|
Num1,
|
||||||
Numpad2,
|
Num2,
|
||||||
Numpad3,
|
Num3,
|
||||||
Numpad4,
|
Num4,
|
||||||
Numpad5,
|
Num5,
|
||||||
Numpad6,
|
Num6,
|
||||||
Numpad7,
|
Num7,
|
||||||
Numpad8,
|
Num8,
|
||||||
Numpad9,
|
Num9,
|
||||||
|
|
||||||
F1 = VK_F1,
|
Numpad0 = VK_NUMPAD0,
|
||||||
F2,
|
Numpad1,
|
||||||
F3,
|
Numpad2,
|
||||||
F4,
|
Numpad3,
|
||||||
F5,
|
Numpad4,
|
||||||
F6,
|
Numpad5,
|
||||||
F7,
|
Numpad6,
|
||||||
F8,
|
Numpad7,
|
||||||
F9,
|
Numpad8,
|
||||||
F10,
|
Numpad9,
|
||||||
F11,
|
|
||||||
F12,
|
F1 = VK_F1,
|
||||||
|
F2,
|
||||||
|
F3,
|
||||||
|
F4,
|
||||||
|
F5,
|
||||||
|
F6,
|
||||||
|
F7,
|
||||||
|
F8,
|
||||||
|
F9,
|
||||||
|
F10,
|
||||||
|
F11,
|
||||||
|
F12,
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue