diff --git a/Easy2D/Easy2D.vcxproj b/Easy2D/Easy2D.vcxproj
index c61d5ab2..97709635 100644
--- a/Easy2D/Easy2D.vcxproj
+++ b/Easy2D/Easy2D.vcxproj
@@ -380,12 +380,6 @@
-
-
-
-
-
-
diff --git a/Easy2D/Easy2D.vcxproj.filters b/Easy2D/Easy2D.vcxproj.filters
index 2ae69405..5bee1125 100644
--- a/Easy2D/Easy2D.vcxproj.filters
+++ b/Easy2D/Easy2D.vcxproj.filters
@@ -170,24 +170,6 @@
-
- 头文件
-
-
- 头文件
-
-
- 头文件
-
-
- 头文件
-
-
- 头文件
-
-
- 头文件
-
头文件
diff --git a/Easy2D/Msg/MouseMsg.cpp b/Easy2D/Msg/MouseMsg.cpp
index d016fdfa..a13693f6 100644
--- a/Easy2D/Msg/MouseMsg.cpp
+++ b/Easy2D/Msg/MouseMsg.cpp
@@ -1,6 +1,5 @@
#include "..\easy2d.h"
#include "..\EasyX\easyx.h"
-#include "..\e2dmsg.h"
// Êó±ê¼àÌý»Øµ÷º¯ÊýµÄÈÝÆ÷
static std::vector s_vMouseMsg;
diff --git a/Easy2D/Object/Button/Button.cpp b/Easy2D/Object/Button/Button.cpp
index 21ac9c1b..8044d691 100644
--- a/Easy2D/Object/Button/Button.cpp
+++ b/Easy2D/Object/Button/Button.cpp
@@ -1,6 +1,5 @@
#include "..\..\easy2d.h"
#include "..\..\EasyX\easyx.h"
-#include "..\..\e2dobj.h"
Button::Button() :
diff --git a/Easy2D/Object/MouseNode.cpp b/Easy2D/Object/MouseNode.cpp
index 6838b140..4203e484 100644
--- a/Easy2D/Object/MouseNode.cpp
+++ b/Easy2D/Object/MouseNode.cpp
@@ -1,5 +1,4 @@
#include "..\easy2d.h"
-#include "..\e2dobj.h"
MouseNode::MouseNode() :
diff --git a/Easy2D/e2daction.h b/Easy2D/e2daction.h
deleted file mode 100644
index 1fe66f48..00000000
--- a/Easy2D/e2daction.h
+++ /dev/null
@@ -1,313 +0,0 @@
-#pragma once
-#include
-
-namespace easy2d
-{
- class Action :
- public Object
- {
- friend class Sprite;
- friend class ActionManager;
- friend class ActionTwo;
- friend class ActionNeverStop;
- friend class ActionSequence;
- public:
- Action();
- virtual ~Action();
-
- bool isRunning();
- void start();
- void resume();
- void pause();
- void stop();
- void setInterval(UINT ms);
- virtual Action * copy() = 0;
- virtual Action * reverse() const;
-
- protected:
- bool m_bRunning;
- bool m_bStop;
- Sprite * m_pParent;
- UINT m_nMilliSeconds;
- LARGE_INTEGER m_nLast;
- LARGE_INTEGER m_nAnimationInterval;
-
- protected:
- virtual void _init() = 0;
- virtual bool _exec(LARGE_INTEGER nNow) = 0;
- virtual void _reset() = 0;
- };
-
-
- class Animation :
- public Action
- {
- public:
- Animation(float duration);
- virtual ~Animation();
-
- protected:
- UINT m_nDuration;
- UINT m_nTotalDuration;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionMoveBy :
- public Animation
- {
- public:
- ActionMoveBy(float duration, CVector vec);
- virtual ~ActionMoveBy();
-
- virtual ActionMoveBy * copy() override;
- virtual ActionMoveBy * reverse() const override;
-
- protected:
- CPoint m_BeginPos;
- CVector m_MoveVector;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionMoveTo :
- public ActionMoveBy
- {
- public:
- ActionMoveTo(float duration, CPoint pos);
- virtual ~ActionMoveTo();
-
- virtual ActionMoveTo * copy() override;
-
- protected:
- CPoint m_EndPos;
-
- protected:
- virtual void _init() override;
- virtual void _reset() override;
- };
-
-
- class ActionScaleBy :
- public Animation
- {
- public:
- ActionScaleBy(float duration, float scaleX, float scaleY);
- virtual ~ActionScaleBy();
-
- virtual ActionScaleBy * copy() override;
- virtual ActionScaleBy * reverse() const override;
-
- protected:
- float m_nBeginScaleX;
- float m_nBeginScaleY;
- float m_nVariationX;
- float m_nVariationY;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionScaleTo :
- public ActionScaleBy
- {
- public:
- ActionScaleTo(float duration, float scaleX, float scaleY);
- virtual ~ActionScaleTo();
-
- virtual ActionScaleTo * copy() override;
-
- protected:
- float m_nEndScaleX;
- float m_nEndScaleY;
-
- protected:
- virtual void _init() override;
- virtual void _reset() override;
- };
-
-
- class ActionOpacityBy :
- public Animation
- {
- public:
- ActionOpacityBy(float duration, float opacity);
- virtual ~ActionOpacityBy();
-
- virtual ActionOpacityBy * copy() override;
- virtual ActionOpacityBy * reverse() const override;
-
- protected:
- float m_nBeginVal;
- float m_nVariation;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionOpacityTo :
- public ActionOpacityBy
- {
- public:
- ActionOpacityTo(float duration, float opacity);
- virtual ~ActionOpacityTo();
-
- virtual ActionOpacityTo * copy() override;
-
- protected:
- float m_nEndVal;
-
- protected:
- virtual void _init() override;
- virtual void _reset() override;
- };
-
-
- class ActionFadeIn :
- public ActionOpacityTo
- {
- public:
- ActionFadeIn(float duration) : ActionOpacityTo(duration, 1) {}
- };
-
-
- class ActionFadeOut :
- public ActionOpacityTo
- {
- public:
- ActionFadeOut(float duration) : ActionOpacityTo(duration, 0) {}
- };
-
-
- class ActionTwo :
- public Action
- {
- public:
- ActionTwo(Action * actionFirst, Action * actionSecond);
- virtual ~ActionTwo();
-
- virtual ActionTwo * copy() override;
- virtual ActionTwo * reverse() const override;
-
- protected:
- Action * m_FirstAction;
- Action * m_SecondAction;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionSequence :
- public Action
- {
- public:
- ActionSequence(int number, Action * action1, ...);
- virtual ~ActionSequence();
-
- virtual ActionSequence * copy() override;
- virtual ActionSequence * reverse() const override;
-
- protected:
- UINT m_nActionIndex;
- std::vector m_vActions;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionDelay :
- public Action
- {
- public:
- ActionDelay(float duration);
- virtual ~ActionDelay();
-
- virtual ActionDelay * copy() override;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionNeverStop :
- public Action
- {
- public:
- ActionNeverStop(Action * action);
- virtual ~ActionNeverStop();
-
- virtual ActionNeverStop * copy() override;
-
- protected:
- Action * m_Action;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionFrames :
- public Action
- {
- public:
- ActionFrames();
- ~ActionFrames();
-
- void addFrame(Image * frame);
- virtual ActionFrames * copy() override;
- virtual ActionFrames * reverse() const override;
-
- protected:
- UINT m_nFrameIndex;
- std::vector m_vFrames;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-
- class ActionCallback :
- public Action
- {
- public:
- ActionCallback(const std::function& callback);
- ~ActionCallback();
-
- virtual ActionCallback * copy() override;
-
- protected:
- std::function m_Callback;
-
- protected:
- virtual void _init() override;
- virtual bool _exec(LARGE_INTEGER nNow) override;
- virtual void _reset() override;
- };
-
-} // End of easy2d namespace
\ No newline at end of file
diff --git a/Easy2D/e2dbase.h b/Easy2D/e2dbase.h
deleted file mode 100644
index 383a9ff4..00000000
--- a/Easy2D/e2dbase.h
+++ /dev/null
@@ -1,184 +0,0 @@
-#pragma once
-#include
-#include
-#include
-#include
-#include
-#include
-
-// String macros
-
-#ifdef UNICODE
-#define tstring std::wstring
-#else
-#define tstring std::string
-#endif
-
-
-// Safe macros
-
-#define SAFE_DELETE(p) { delete (p); (p) = nullptr; }
-#define SAFE_DELETE_ARRAY(p) { if (p) { delete[] (p); (p) = nullptr; } }
-#define SAFE_RELEASE(p) { if (p) p->release(); }
-
-
-// Type Declare
-
-typedef CPoint CVector;
-typedef unsigned int VK_KEY;
-typedef std::function CLICK_CALLBACK;
-typedef std::function TIMER_CALLBACK;
-typedef std::function KEY_CALLBACK;
-typedef std::function MOUSE_CALLBACK;
-
-
-// Classes Declare
-
-namespace easy2d
-{
- class Scene;
- class Node;
-
- class App
- {
- public:
- App();
- ~App();
-
- // ´°¿Ú¿Éѡģʽ
- enum MODE { SHOW_CONSOLE = 1, NO_CLOSE = 2, NO_MINI_MIZE = 4 };
-
- // ¶¨Òå»æÍ¼´°¿Ú
- void createWindow(int width, int height, int mode = 0);
- // ¶¨Òå»æÍ¼´°¿Ú
- void createWindow(CSize size, int mode = 0);
- // ¶¨Òå»æÍ¼´°¿Ú
- void createWindow(tstring title, int width, int height, int mode = 0);
- // ¶¨Òå»æÍ¼´°¿Ú
- void createWindow(tstring title, CSize size, int mode = 0);
- // Æô¶¯³ÌÐò
- int run();
- // ÊÍ·ÅËùÓÐÄÚ´æ×ÊÔ´
- void free();
- // Ïú»Ù¸Ã¶ÔÏó
- void destory();
-
- // »ñÈ¡³ÌÐòʵÀý
- static App * get();
- // ÉèÖÃ×ø±êÔµã
- static void setOrigin(int originX, int originY);
- // »ñÈ¡×ø±êÔµãµÄÎïÀíºá×ø±ê
- static int getOriginX();
- // »ñÈ¡×ø±êÔµãµÄÎïÀí×Ý×ø±ê
- static int getOriginY();
- // ÖÕÖ¹³ÌÐò
- static void quit();
- // ÖÕÖ¹³ÌÐò
- static void end();
- // Ð޸Ĵ°¿Ú´óС
- static void setWindowSize(int width, int height);
- // Ð޸Ĵ°¿Ú´óС
- static void setWindowSize(CSize size);
- // ¹Ø±Õ´°¿Ú
- static void close();
- // ÉèÖô°¿Ú±êÌâ
- static void setWindowTitle(tstring title);
- // »ñÈ¡´°¿Ú±êÌâ
- static tstring getWindowTitle();
- // »ñÈ¡´°¿Ú¿í¶È
- static int getWidth();
- // »ñÈ¡´°¿Ú¸ß¶È
- static int getHeight();
- // Çл»³¡¾°
- static void enterScene(Scene *scene, bool save = true);
- // ·µ»ØÉÏÒ»³¡¾°
- static void backScene();
- // Çå¿Õ֮ǰ±£´æµÄËùÓг¡¾°
- static void clearScene();
- // ÉèÖÃ AppName
- static void setAppName(tstring appname);
- // »ñÈ¡ AppName
- static tstring getAppName();
- // Ð޸Ĵ°¿Ú±³¾°É«
- static void setBkColor(COLORREF color);
- // ÉèÖÃÖ¡ÂÊ
- static void setFPS(DWORD fps);
- // ÖØÖûæÍ¼ÑùʽΪĬÈÏÖµ
- static void reset();
- // »ñÈ¡µ±Ç°³¡¾°
- static Scene * getCurrentScene();
-
- protected:
- tstring m_sTitle;
- tstring m_sAppName;
- Scene* m_CurrentScene;
- Scene* m_NextScene;
- std::stack m_SceneStack;
- LARGE_INTEGER m_nAnimationInterval;
- CSize m_Size;
- int m_nWindowMode;
- bool m_bRunning;
- bool m_bSaveScene;
-
- protected:
- void _initGraph();
- void _mainLoop();
- void _enterNextScene();
- };
-
- class FreePool
- {
- friend class App;
- friend class Object;
-
- private:
- // Ë¢ÐÂÄÚ´æ³Ø
- static void __flush();
- // ½«Ò»¸ö½Úµã·ÅÈëÊͷųØ
- static void __add(Object * nptr);
- };
-
- class Scene
- {
- friend class App;
- friend class MouseMsg;
-
- public:
- Scene();
- ~Scene();
-
- // ÖØÐ´Õâ¸öº¯Êý£¬Ëü½«ÔÚ½øÈëÕâ¸ö³¡¾°Ê±×Ô¶¯Ö´ÐÐ
- virtual void onEnter();
- // ÖØÐ´Õâ¸öº¯Êý£¬Ëü½«ÔÚÀ뿪Õâ¸ö³¡¾°Ê±×Ô¶¯Ö´ÐÐ
- virtual void onExit();
- // Ìí¼Ó×Ó³ÉÔ±µ½³¡¾°
- void add(Node * child, int zOrder = 0);
- // ɾ³ý×Ó³ÉÔ±
- bool del(Node * child);
- // Çå¿ÕËùÓÐ×Ó³ÉÔ±
- void clearAllChildren();
-
- protected:
- std::vector m_vChildren;
-
- protected:
- void _exec();
- void _onDraw();
- };
-
- class Object
- {
- friend class FreePool;
-
- public:
- Object();
- virtual ~Object();
-
- void retain();
- void release();
-
- protected:
- int m_nRef;
- };
-
-} // End of easy2d namespace
\ No newline at end of file
diff --git a/Easy2D/e2dmsg.h b/Easy2D/e2dmsg.h
deleted file mode 100644
index e2494c3d..00000000
--- a/Easy2D/e2dmsg.h
+++ /dev/null
@@ -1,112 +0,0 @@
-#pragma once
-#include
-
-namespace easy2d
-{
- class MouseMsg
- {
- friend class App;
-
- public:
- MouseMsg();
- MouseMsg(tstring name, const MOUSE_CALLBACK& callback);
- ~MouseMsg();
-
- // Ìí¼Ó¼üÅ̼àÌý
- static void addListener(tstring name, const MOUSE_CALLBACK& callback);
- // ɾ³ý¼üÅ̼àÌý
- static bool delListener(tstring name);
- // ɾ³ýËùÓмüÅ̼àÌý
- static void clearAllListeners();
- // ×ó¼üÊÇ·ñ°´ÏÂ
- static bool isLButtonDown();
- // ÓÒ¼üÊÇ·ñ°´ÏÂ
- static bool isRButtonDown();
- // ÖмüÊÇ·ñ°´ÏÂ
- static bool isMButtonDown();
- // »ñÈ¡Êó±êX×ø±ê
- static int getX();
- // »ñÈ¡Êó±êY×ø±ê
- static int getY();
- // »ñÈ¡Êó±ê×ø±ê
- static CPoint getPos();
- // »ñÈ¡Êó±ê¹öÂÖÖµ
- static int getWheel();
- // Êó±êÒÆ¶¯ÏûÏ¢
- static bool isOnMouseMoved();
- // ×ó¼üË«»÷ÏûÏ¢
- static bool isOnLButtonDBClicked();
- // ÓÒ¼ü°´ÏÂÏûÏ¢
- static bool isOnLButtonDown();
- // ×ó¼üµ¯ÆðÏûÏ¢
- static bool isOnLButtonUp();
- // ÓÒ¼üË«»÷ÏûÏ¢
- static bool isOnRButtonDBClicked();
- // ÓÒ¼ü°´ÏÂÏûÏ¢
- static bool isOnRButtonDown();
- // ÓÒ¼üµ¯ÆðÏûÏ¢
- static bool isOnRButtonUp();
- // ÖмüË«»÷ÏûÏ¢
- static bool isOnMButtonDBClicked();
- // Öмü°´ÏÂÏûÏ¢
- static bool isOnMButtonDown();
- // Öмüµ¯ÆðÏûÏ¢
- static bool isOnMButtonUp();
- // Êó±ê¹öÂÖ²¦¶¯ÏûÏ¢
- static bool isOnWheel();
- // Çå¿ÕÊó±êÏûÏ¢
- static void resetMouseMsg();
-
- private:
- static void __exec();
-
- protected:
- tstring m_sName;
- MOUSE_CALLBACK m_callback;
-
- protected:
- // Ö´Ðлص÷º¯Êý
- void onMouseMsg();
- };
-
-
- class KeyMsg
- {
- friend class App;
-
- public:
- KeyMsg(tstring name, const KEY_CALLBACK& callback);
- ~KeyMsg();
-
- // Ö´Ðлص÷º¯Êý
- void onKbHit(VK_KEY key);
-
- // Ìí¼Ó¼üÅ̼àÌý
- static void addListener(tstring name, const KEY_CALLBACK& callback);
- // ɾ³ý¼üÅ̼àÌý
- static bool delListener(tstring name);
- // ɾ³ýËùÓмüÅ̼àÌý
- static void clearAllListeners();
- // ÅжϼüÊÇ·ñ±»°´Ï£¬°´Ï·µ»Øtrue
- static bool isKeyDown(VK_KEY key);
-
- public:
- // ×Öĸ¼üÖµ
- static const VK_KEY A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z;
- // Êý×Ö¼üÖµ
- static const VK_KEY NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9, NUM_0;
- // СÊý×Ö¼üÅÌÖµ
- static const VK_KEY NUMPAD_1, NUMPAD_2, NUMPAD_3, NUMPAD_4, NUMPAD_5, NUMPAD_6, NUMPAD_7, NUMPAD_8, NUMPAD_9, NUMPAD_0;
- // ¿ØÖƼüÖµ
- static const VK_KEY Enter, Space, Up, Down, Left, Right, Esc, Shift, LShift, RShift, Ctrl, LCtrl, RCtrl;
- // F ¼üÖµ
- static const VK_KEY F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12;
-
- private:
- static void __exec();
-
- protected:
- tstring m_sName;
- KEY_CALLBACK m_callback;
- };
-} // End of easy2d namespace
\ No newline at end of file
diff --git a/Easy2D/e2dobj.h b/Easy2D/e2dobj.h
deleted file mode 100644
index 93e915a0..00000000
--- a/Easy2D/e2dobj.h
+++ /dev/null
@@ -1,589 +0,0 @@
-#pragma once
-#include
-#include
-
-namespace easy2d
-{
- class FontStyle;
- class Color;
- class Action;
-
- class Node :
- public Object
- {
- friend class Scene;
- friend class BatchNode;
-
- public:
- Node();
- Node(CPoint p);
- Node(int x, int y);
- virtual ~Node();
-
- // »ñÈ¡½Úµãºá×ø±ê
- virtual int getX() const;
- // »ñÈ¡½Úµã×Ý×ø±ê
- virtual int getY() const;
- // »ñÈ¡½Úµã×ø±ê
- virtual CPoint getPos() const;
- // ÉèÖýڵãºá×ø±ê
- virtual void setX(int x);
- // ÉèÖýڵã×Ý×ø±ê
- virtual void setY(int y);
- // ÉèÖýڵãºá×Ý×ø±ê
- virtual void setPos(int x, int y);
- // ÉèÖýڵãºá×Ý×ø±ê
- virtual void setPos(CPoint p);
- // ÒÆ¶¯½Úµã
- virtual void move(int x, int y);
- // ÉèÖýڵãºá×Ý×ø±ê
- virtual void move(CVector v);
- // ½ÚµãÊÇ·ñÏÔʾ
- virtual bool display() const;
- // ÉèÖýڵãÊÇ·ñÏÔʾ
- virtual void setDisplay(bool value);
- // »ñÈ¡½Úµã»æÍ¼Ë³Ðò
- virtual int getZOrder() const;
- // ÉèÖÃ½Úµã»æÍ¼Ë³Ðò£¨0Ϊ×îÏÈ»æÖÆ£¬ÏÔʾÔÚ×îµ×²ã£©
- virtual void setZOrder(int z);
- // »ñÈ¡½ÚµãËùÔÚ³¡¾°
- Scene * getParentScene();
-
- protected:
- int m_nZOrder;
- bool m_bDisplay;
- Scene* m_pScene;
- CPoint m_Pos;
-
- protected:
- virtual bool _exec(bool active);
- virtual void _onDraw() = 0;
- void setParentScene(Scene * scene);
- };
-
-
- class BatchNode :
- public Node
- {
- public:
- BatchNode();
- virtual ~BatchNode();
-
- // Ìí¼Ó×Ó½Úµã
- void add(Node *child, int z_Order = 0);
- // ɾ³ý×Ó½Úµã
- bool del(Node * child);
- // Çå¿ÕËùÓÐ×Ó½Úµã
- void clearAllChildren();
-
- protected:
- std::vector m_vChildren;
-
- protected:
- virtual bool _exec(bool active) override;
- virtual void _onDraw() override;
- };
-
-
- class Layer :
- public BatchNode
- {
- public:
- Layer();
- virtual ~Layer();
-
- // ͼ²ãÊÇ·ñ×èÈûÏûÏ¢
- int getBlock() const;
- // ÉèÖÃͼ²ãÊÇ·ñ×èÈûÏûÏ¢
- void setBlock(bool block);
-
- protected:
- bool m_bBlock;
-
- protected:
- virtual bool _exec(bool active) override;
- };
-
-
- class RectNode :
- public Node
- {
- public:
- RectNode();
- ~RectNode();
-
- virtual bool isCollisionWith(RectNode * rectNode) const;
- virtual bool isPointIn(CPoint p) const;
-
- virtual void setWindowCenterX();
- virtual void setWindowCenterY();
- virtual void setWindowCenter();
-
- virtual int getX() const override;
- virtual int getY() const override;
- virtual CPoint getPos() const override;
- virtual int getWidth() const;
- virtual int getHeight() const;
- virtual CSize getSize() const;
- virtual CRect getRect() const;
-
- virtual void setX(int x) override;
- virtual void setY(int y) override;
- virtual void setPos(int x, int y) override;
- virtual void setPos(CPoint p) override;
- virtual void move(int x, int y) override;
- virtual void move(CVector v) override;
- virtual void setWidth(int width);
- virtual void setHeight(int height);
- virtual void setSize(int width, int height);
- virtual void setSize(CSize size);
- virtual void setRect(int x1, int y1, int x2, int y2);
- virtual void setRect(CPoint leftTop, CPoint rightBottom);
- virtual void setRect(CRect rect);
-
- protected:
- CRect m_Rect;
- };
-
-
- class Text :
- public RectNode
- {
- friend class TextButton;
-
- public:
- Text();
- // ¸ù¾Ý×Ö·û´®¡¢ÑÕÉ«ºÍ×ÖÌå´´½¨ÎÄ×Ö
- Text(tstring text, COLORREF color = Color::white, FontStyle * font = FontStyle::getDefault());
- // ¸ù¾Ýºá×Ý×ø±ê¡¢×Ö·û´®¡¢ÑÕÉ«ºÍ×ÖÌå´´½¨ÎÄ×Ö
- Text(int x, int y, tstring text, COLORREF color = Color::white, FontStyle * font = FontStyle::getDefault());
- virtual ~Text();
-
- // »ñÈ¡µ±Ç°ÑÕÉ«
- COLORREF getColor() const;
- // »ñÈ¡µ±Ç°ÎÄ×Ö
- tstring getText() const;
- // »ñÈ¡µ±Ç°×ÖÌå
- FontStyle * getFontStyle();
- // Îı¾ÊÇ·ñΪ¿Õ
- bool isEmpty() const;
-
- // ÉèÖÃÎÄ×Ö
- void setText(tstring text);
- // ÉèÖÃÎÄ×ÖÑÕÉ«
- void setColor(COLORREF color);
- // ÉèÖÃ×ÖÌå
- void setFontStyle(FontStyle * style);
-
- protected:
- tstring m_sText;
- COLORREF m_color;
- FontStyle * m_pFontStyle;
-
- protected:
- virtual void _onDraw() override;
- };
-
-
- class Image :
- public RectNode
- {
- friend class Sprite;
- friend class ImageButton;
- public:
- Image();
- // ´ÓͼƬÎļþ»ñȡͼÏñ
- Image(LPCTSTR ImageFile);
- /**
- * ´ÓͼƬÎļþ»ñȡͼÏñ
- * ²ÎÊý£ºÍ¼Æ¬ÎļþÃû£¬Í¼Æ¬²Ã¼ô×ø±ê£¬Í¼Æ¬²Ã¼ô¿í¶ÈºÍ¸ß¶È
- */
- Image(LPCTSTR ImageFile, int x, int y, int width, int height);
- virtual ~Image();
-
- // »ñÈ¡ºáÏòÀÉì±ÈÀý
- float getScaleX() const;
- // »ñÈ¡×ÝÏòÀÉì±ÈÀý
- float getScaleY() const;
- // »ñȡ͸Ã÷¶È
- float getOpacity() const;
-
- /**
- * ´ÓͼƬÎļþ»ñȡͼÏñ
- * ·µ»ØÖµ£ºÍ¼Æ¬¼ÓÔØÊÇ·ñ³É¹¦
- */
- bool setImage(LPCTSTR ImageFile);
- /**
- * ´ÓͼƬÎļþ»ñȡͼÏñ
- * ²ÎÊý£ºÍ¼Æ¬ÎļþÃû£¬Í¼Æ¬²Ã¼ôÆðÊ¼×ø±ê£¬Í¼Æ¬²Ã¼ô¿í¶ÈºÍ¸ß¶È
- * ·µ»ØÖµ£ºÍ¼Æ¬¼ÓÔØÊÇ·ñ³É¹¦
- */
- bool setImage(LPCTSTR ImageFile, int x, int y, int width, int height);
- /**
- * ´Ó×ÊÔ´Îļþ»ñȡͼÏñ£¬²»Ö§³Ö png
- * ·µ»ØÖµ£ºÍ¼Æ¬¼ÓÔØÊÇ·ñ³É¹¦
- */
- bool setImageFromRes(LPCTSTR pResName);
- /**
- * ´Ó×ÊÔ´Îļþ»ñȡͼÏñ£¬²»Ö§³Ö png
- * ²ÎÊý£º×ÊÔ´Ãû³Æ£¬Í¼Æ¬²Ã¼ô×ø±ê£¬Í¼Æ¬²Ã¼ô¿í¶ÈºÍ¸ß¶È
- * ·µ»ØÖµ£ºÍ¼Æ¬¼ÓÔØÊÇ·ñ³É¹¦
- */
- bool setImageFromRes(LPCTSTR pResName, int x, int y, int width, int height);
- // ²Ã¼ôͼƬ£¨²Ã¼ôºó»á»Ö¸´ stretch ÀÉ죩
- void crop(int x, int y, int width, int height);
- // ½«Í¼Æ¬ÀÉìµ½¹Ì¶¨¿í¸ß
- void stretch(int width, int height);
- // °´±ÈÀýÀÉìͼƬ
- void setScale(float scaleX, float scaleY);
- // ÉèÖÃ͸Ã÷¶È£¬·¶Î§ 0~1.0f£¨Ö»¶Ô png ͼƬÉúЧ£©
- void setOpacity(float value);
- // ÉèÖÃ͸Ã÷É«
- void setTransparentColor(COLORREF value);
- // ÖØÖÃͼƬÊôÐÔ
- void reset();
- // ±£´æÓÎÏ·½ØÍ¼
- static void saveScreenshot();
-
- protected:
- CImage m_Image;
- CRect m_SrcRect;
- BYTE m_nAlpha;
- float m_fScaleX;
- float m_fScaleY;
-
- protected:
- virtual void _onDraw() override;
- };
-
-
- class Sprite :
- public RectNode
- {
- friend class BatchSprite;
- public:
- Sprite();
- Sprite(Image * image);
- Sprite(LPCTSTR imageFileName);
- virtual ~Sprite();
-
- // ÅжÏÊÇ·ñºÍÁíÒ»¸ö¾«ÁéÅöײ
- bool isCollisionWith(Sprite * sprite);
- // Ð޸ľ«ÁéͼƬ
- virtual void setImage(Image * image);
- // Ìí¼Ó¶¯×÷
- virtual void addAction(Action * action);
- // ÔÝÍ£ËùÓж¯×÷
- virtual void pauseAllAction();
- // ¼ÌÐøËùÓж¯×÷
- virtual void resumeAllAction();
- // Í£Ö¹ËùÓж¯×÷
- virtual void stopAllAction();
-
- virtual float getScaleX() const;
- virtual float getScaleY() const;
- virtual float getOpacity() const;
-
- virtual void setScale(float scaleX, float scaleY);
- virtual void setOpacity(float opacity);
-
- protected:
- float m_fScaleX;
- float m_fScaleY;
- BYTE m_nAlpha;
- Image * m_pImage;
-
- protected:
- bool _exec(bool active) override;
- void _onDraw() override;
- };
-
-
- class BatchSprite :
- public Node
- {
- public:
- BatchSprite();
- virtual ~BatchSprite();
-
- // Ìí¼Ó¾«Áé
- void addSprite(Sprite * sprite, int z_Order = 0);
- // ɾ³ý¾«Áé
- bool delSprite(Sprite * child);
- // ɾ³ýËùÓо«Áé
- void clearAllSprites();
- // ÅжÏÊÇ·ñÓо«Áé²úÉúÅöײ
- // ·µ»ØÖµ£ºÈôÓÐÅöײ£¬·µ»ØµÚÒ»¸ö²úÉúÅöײµÄ¾«Á飬·ñÔò·µ»Ø¿ÕÖ¸Õë
- Sprite * isCollisionWith(Sprite * sprite);
- // ÅжϵãÊÇ·ñÔÚ¾«ÁéÄÚ²¿
- // ·µ»ØÖµ£ºÈôÕâ¸öµãÔÚÈÎÒâÒ»¸ö¾«ÁéÄÚ²¿£¬·µ»ØÕâ¸ö¾«Á飬·ñÔò·µ»Ø¿ÕÖ¸Õë
- Sprite * isPointIn(CPoint point);
- // ͬʱÐÞ¸ÄËùÓо«ÁéµÄͼƬ
- virtual void setImage(Image * image);
-
- virtual float getScaleX() const;
- virtual float getScaleY() const;
- virtual float getOpacity() const;
-
- virtual void setScale(float scaleX, float scaleY);
- virtual void setOpacity(float opacity);
-
- protected:
- std::vector m_vSprites;
- float m_fScaleX;
- float m_fScaleY;
- BYTE m_nAlpha;
-
- protected:
- bool _exec(bool active) override;
- void _onDraw() override;
- };
-
-
- class MouseNode :
- public RectNode
- {
- public:
- MouseNode();
- virtual ~MouseNode();
-
- // Êó±êÊÇ·ñÒÆÈë
- virtual bool isMouseIn();
- // Êó±êÊÇ·ñÑ¡ÖÐ
- virtual bool isSelected();
- // ÉèÖûص÷º¯Êý
- virtual void setClickedCallback(const CLICK_CALLBACK & callback);
- // ÉèÖûص÷º¯Êý
- virtual void setMouseInCallback(const CLICK_CALLBACK & callback);
- // ÉèÖûص÷º¯Êý
- virtual void setMouseOutCallback(const CLICK_CALLBACK & callback);
- // ÉèÖûص÷º¯Êý
- virtual void setSelectCallback(const CLICK_CALLBACK & callback);
- // ÉèÖûص÷º¯Êý
- virtual void setUnselectCallback(const CLICK_CALLBACK & callback);
- // ÖØÖÃ״̬
- virtual void reset();
- // ÉèÖýڵãÊÇ·ñ×èÈûÊó±êÏûÏ¢
- void setBlock(bool block);
-
- protected:
- bool m_bTarget;
- bool m_bBlock;
- enum Status { NORMAL, MOUSEIN, SELECTED } m_eStatus;
- CLICK_CALLBACK m_OnMouseInCallback;
- CLICK_CALLBACK m_OnMouseOutCallback;
- CLICK_CALLBACK m_OnSelectCallback;
- CLICK_CALLBACK m_OnUnselectCallback;
- CLICK_CALLBACK m_ClickCallback;
-
- protected:
- virtual bool _exec(bool active) override;
- virtual void _onDraw() override;
-
- // ÖØÐ´Õâ¸ö·½·¨¿ÉÒÔ×Ô¶¨Òå°´Å¥µÄÅжϷ½·¨
- virtual bool _isMouseIn();
- // Çл»×´Ì¬
- virtual void _setStatus(Status status);
- // Õý³£×´Ì¬
- virtual void _onNormal() = 0;
- // Êó±êÒÆÈëʱ
- virtual void _onMouseIn() = 0;
- // Êó±êÑ¡ÖÐʱ
- virtual void _onSelected() = 0;
- };
-
-
- class Button :
- public MouseNode
- {
- public:
- Button();
- virtual ~Button();
-
- // °´Å¥ÊÇ·ñÆôÓÃ
- virtual bool isEnable();
- // ÉèÖÃÊÇ·ñÆôÓÃ
- virtual void setEnable(bool enable);
-
- // ÉèÖð´Å¥ºá×ø±ê
- virtual void setX(int x) override;
- // ÉèÖð´Å¥×Ý×ø±ê
- virtual void setY(int y) override;
- // ÉèÖð´Å¥×ø±ê
- virtual void setPos(int x, int y) override;
- // ÉèÖð´Å¥×ø±ê
- virtual void setPos(CPoint p) override;
- // ÒÆ¶¯°´Å¥
- virtual void move(int x, int y) override;
- // ÒÆ¶¯°´Å¥
- virtual void move(CVector v) override;
-
- protected:
- bool m_bEnable;
-
- protected:
- virtual bool _exec(bool active) override;
- virtual void _onDraw() override;
- virtual void _resetPosition() = 0;
-
- virtual void _onNormal() = 0;
- virtual void _onMouseIn() = 0;
- virtual void _onSelected() = 0;
- virtual void _onDisable() = 0;
- };
-
-
- class TextButton :
- public Button
- {
- public:
- TextButton();
- TextButton(tstring text);
- TextButton(Text * text);
- virtual ~TextButton();
-
- // ÉèÖð´Å¥ÎÄ×Ö
- void setNormal(Text * text);
- // ÉèÖÃÊó±êÒÆÈëʱµÄ°´Å¥ÎÄ×Ö
- void setMouseIn(Text * text);
- // ÉèÖÃÊó±êÑ¡ÖÐʱµÄ°´Å¥ÎÄ×Ö
- void setSelected(Text * text);
- // ÉèÖð´Å¥½ûÓÃʱµÄ°´Å¥ÎÄ×Ö
- void setUnable(Text * text);
-
- protected:
- Text * m_pNormalText;
- Text * m_pMouseInText;
- Text * m_pSelectedText;
- Text * m_pUnableText;
-
- protected:
- virtual void _resetPosition() override;
-
- virtual void _setStatus(Status status) override;
- virtual void _onNormal() override;
- virtual void _onMouseIn() override;
- virtual void _onSelected() override;
- virtual void _onDisable() override;
- };
-
-
- class ImageButton :
- public Button
- {
- public:
- ImageButton();
- ImageButton(LPCTSTR image);
- ImageButton(Image * image);
- virtual ~ImageButton();
-
- // ÉèÖð´Å¥Í¼Æ¬
- void setNormal(Image * image);
- // ÉèÖÃÊó±êÒÆÈëʱµÄ°´Å¥Í¼Æ¬
- void setMouseIn(Image * image);
- // ÉèÖÃÊó±êÑ¡ÖÐʱµÄ°´Å¥Í¼Æ¬
- void setSelected(Image * image);
- // ÉèÖð´Å¥½ûÓÃʱµÄ°´Å¥Í¼Æ¬
- void setUnable(Image * image);
-
- protected:
- Image * m_pNormalImage;
- Image * m_pMouseInImage;
- Image * m_pSelectedImage;
- Image * m_pUnableImage;
-
- protected:
- virtual void _resetPosition() override;
- virtual void _setStatus(Status status) override;
- virtual void _onNormal() override;
- virtual void _onMouseIn() override;
- virtual void _onSelected() override;
- virtual void _onDisable() override;
- };
-
-
- class Shape :
- public Node
- {
- public:
- Shape();
- virtual ~Shape();
-
- // ÐÎ×´Ìî³äÑùʽ
- enum STYLE { ROUND, SOLID, FILL } m_eStyle;
-
- // »ñÈ¡ÐÎ×´µÄÌî³äÑÕÉ«
- COLORREF getFillColor() const;
- // »ñÈ¡ÐÎ×´µÄÏßÌõÑÕÉ«
- COLORREF getLineColor() const;
- // ÉèÖÃÌî³äÑÕÉ«
- void setFillColor(COLORREF color);
- // ÉèÖÃÏßÌõÑÕÉ«
- void setLineColor(COLORREF color);
- // ÉèÖÃÌî³äÑùʽ
- void setStyle(STYLE style);
-
- protected:
- COLORREF fillColor;
- COLORREF lineColor;
-
- protected:
- virtual void _onDraw() override;
- virtual void solidShape() = 0;
- virtual void fillShape() = 0;
- virtual void roundShape() = 0;
- };
-
-
- class Rect :
- public Shape
- {
- public:
- Rect();
- Rect(int x, int y, int width, int height);
- virtual ~Rect();
-
- // »ñÈ¡¾ØÐοí¶È
- int getWidth() const;
- // »ñÈ¡¾ØÐθ߶È
- int getHeight() const;
- // ÉèÖþØÐοí¶È
- void setWidth(int width);
- // ÉèÖþØÐθ߶È
- void setHeight(int height);
- // ÉèÖþØÐδóС
- void setSize(int width, int height);
-
- protected:
- CSize m_Size;
-
- protected:
- virtual void solidShape() override;
- virtual void fillShape() override;
- virtual void roundShape() override;
- };
-
-
- class Circle :
- public Shape
- {
- public:
- Circle();
- Circle(int x, int y, int radius);
- virtual ~Circle();
-
- // »ñȡԲÐΰ뾶
- int getRadius() const;
- // ÉèÖÃÔ²Ðΰ뾶
- void setRadius(int m_nRadius);
-
- protected:
- int m_nRadius;
-
- protected:
- virtual void solidShape() override;
- virtual void fillShape() override;
- virtual void roundShape() override;
- };
-
-} // End of easy2d namespace
\ No newline at end of file
diff --git a/Easy2D/e2dstyle.h b/Easy2D/e2dstyle.h
deleted file mode 100644
index 73a7ba03..00000000
--- a/Easy2D/e2dstyle.h
+++ /dev/null
@@ -1,104 +0,0 @@
-#pragma once
-#include
-
-namespace easy2d
-{
- class FontStyle :
- public Object
- {
- friend class Text;
-
- public:
- FontStyle();
- /**
- * ʹÓà [×ÖÌåÃû³Æ¡¢×ֺš¢´Öϸ¡¢×Ö¿í¡¢Ð±Ì塢ϻ®Ïß¡¢É¾³ýÏß¡¢×Ö·û´®Êéд½Ç¶È¡¢
- * ÿ¸ö×Ö·ûÊéд½Ç¶È¡¢¿¹¾â³Ý] ÊôÐÔ´´½¨×ÖÌåÑùʽ
- */
- FontStyle(LPCTSTR fontfamily, LONG height = 18, LONG weight = 0, LONG width = 0,
- bool italic = 0, bool underline = 0, bool strikeout = 0, LONG escapement = 0,
- LONG orientation = 0, bool quality = true);
- virtual ~FontStyle();
-
- // »ñȡĬÈÏ×ÖÌå
- static FontStyle * getDefault();
- // ÉèÖÃ×Ö·ûƽ¾ù¸ß¶È
- void setHeight(LONG value);
- // ÉèÖÃ×Ö·ûƽ¾ù¿í¶È£¨0±íʾ×ÔÊÊÓ¦£©
- void setWidth(LONG value);
- // ÉèÖÃ×ÖÌå
- void setFontFamily(LPCTSTR value);
- // ÉèÖÃ×Ö·û±Ê»´Öϸ£¬·¶Î§0~1000£¬Ä¬ÈÏΪ0
- void setWeight(LONG value);
- // ÉèÖÃбÌå
- void setItalic(bool value);
- // ÉèÖÃÏ»®Ïß
- void setUnderline(bool value);
- // ÉèÖÃɾ³ýÏß
- void setStrikeOut(bool value);
- // ÉèÖÃ×Ö·û´®µÄÊéд½Ç¶È£¬µ¥Î»0.1¶È£¬Ä¬ÈÏΪ0
- void setEscapement(LONG value);
- // ÉèÖÃÿ¸ö×Ö·ûµÄÊéд½Ç¶È£¬µ¥Î»0.1¶È£¬Ä¬ÈÏΪ0
- void setOrientation(LONG value);
- // ÉèÖÃ×ÖÌ忹¾â³Ý£¬Ä¬ÈÏΪtrue
- void setQuality(bool value);
-
- protected:
- LOGFONT m_font;
- };
-
-
- class FontWeight
- {
- public:
- static const LONG dontcare; // ´Öϸֵ 0
- static const LONG thin; // ´Öϸֵ 100
- static const LONG extraLight; // ´Öϸֵ 200
- static const LONG light; // ´Öϸֵ 300
- static const LONG normal; // ´Öϸֵ 400
- static const LONG regular; // ´Öϸֵ 400
- static const LONG medium; // ´Öϸֵ 500
- static const LONG demiBlod; // ´Öϸֵ 600
- static const LONG blod; // ´Öϸֵ 700
- static const LONG extraBold; // ´Öϸֵ 800
- static const LONG black; // ´Öϸֵ 900
- static const LONG heavy; // ´Öϸֵ 900
- };
-
- class Color
- {
- public:
- static const COLORREF black; // ºÚÉ«
- static const COLORREF blue; // À¶É«
- static const COLORREF green; // ÂÌÉ«
- static const COLORREF cyan; // ÇàÉ«
- static const COLORREF red; // ºìÉ«
- static const COLORREF magenta; // ×ÏÉ«
- static const COLORREF brown; // רɫ
- static const COLORREF lightgray; // ÁÁ»ÒÉ«
- static const COLORREF darkgray; // Éî»ÒÉ«
- static const COLORREF lightblue; // ÁÁÀ¶É«
- static const COLORREF lightgreen; // ÁÁÂÌÉ«
- static const COLORREF lightcyan; // ÁÁÇàÉ«
- static const COLORREF lightred; // ÁÁºìÉ«
- static const COLORREF lightmagenta; // ÁÁ×ÏÉ«
- static const COLORREF yellow; // ÁÁ»ÆÉ«
- static const COLORREF white; // °×É«
-
- // ͨ¹ýºì¡¢ÂÌ¡¢À¶ÑÕÉ«·ÖÁ¿ºÏ³ÉÑÕÉ«
- static COLORREF getFromRGB(BYTE r, BYTE g, BYTE b);
- // ͨ¹ýÉ«Ïà¡¢±¥ºÍ¶È¡¢ÁÁ¶ÈºÏ³ÉÑÕÉ«
- static COLORREF getFromHSL(float H, float S, float L);
- // ͨ¹ýÉ«Ïà¡¢±¥ºÍ¶È¡¢Ã÷¶ÈºÏ³ÉÑÕÉ«
- static COLORREF getFromHSV(float H, float S, float V);
-
- // ·µ»ØÖ¸¶¨ÑÕÉ«Öеĺìɫֵ
- static BYTE getRValue(COLORREF color);
- // ·µ»ØÖ¸¶¨ÑÕÉ«ÖеÄÂÌɫֵ
- static BYTE getGValue(COLORREF color);
- // ·µ»ØÖ¸¶¨ÑÕÉ«ÖеÄÀ¶É«Öµ
- static BYTE getBValue(COLORREF color);
- // ·µ»ØÓëÖ¸¶¨ÑÕÉ«¶ÔÓ¦µÄ»Ò¶ÈÖµÑÕÉ«
- static COLORREF getGray(COLORREF color);
- };
-
-} // End of easy2d namespace
\ No newline at end of file
diff --git a/Easy2D/e2dtool.h b/Easy2D/e2dtool.h
deleted file mode 100644
index 41389ec0..00000000
--- a/Easy2D/e2dtool.h
+++ /dev/null
@@ -1,174 +0,0 @@
-#pragma once
-#include
-
-namespace easy2d
-{
- class Action;
-
- class FileUtils
- {
- public:
- // »ñȡϵͳµÄ AppData\Local ·¾¶
- static tstring getLocalAppDataPath();
- // »ñȡĬÈϵı£´æÂ·¾¶
- static tstring getDefaultSavePath();
- // ±£´æ int Ð͵ÄÖµ
- static void saveInt(LPCTSTR key, int value);
- // ±£´æ double Ð͵ÄÖµ
- static void saveDouble(LPCTSTR key, double value);
- // ±£´æ ×Ö·û´® Ð͵ÄÖµ£¨²»ÒªÔÚ Unicode ×Ö·û¼¯Ï±£´æÖÐÎÄ×Ö·û£©
- static void saveString(LPCTSTR key, tstring value);
- // »ñÈ¡ int Ð͵ÄÖµ£¨Èô²»´æÔÚÔò·µ»Ø default ²ÎÊýµÄÖµ£©
- static int getInt(LPCTSTR key, int default);
- // »ñÈ¡ double Ð͵ÄÖµ£¨Èô²»´æÔÚÔò·µ»Ø default ²ÎÊýµÄÖµ£©
- static double getDouble(LPCTSTR key, double default);
- // »ñÈ¡ ×Ö·û´® Ð͵ÄÖµ£¨Èô²»´æÔÚÔò·µ»Ø default ²ÎÊýµÄÖµ£©
- static tstring getString(LPCTSTR key, tstring default);
- // µÃµ½ÎļþÀ©Õ¹Ãû£¨Ð¡Ð´£©
- static tstring getFileExtension(const tstring& filePath);
- /**
- * ´ò¿ª±£´æÎļþ¶Ô»°¿ò£¬µÃµ½ÓÐЧ±£´æÂ·¾¶·µ»Ø true
- * ²ÎÊý£º·µ»ØÎļþ·¾¶µÄ×Ö·û´®£¬´°¿Ú±êÌ⣬ÉèÖÃÀ©Õ¹Ãû¹ýÂË£¬ÉèÖÃĬÈÏÀ©Õ¹Ãû
- */
- static bool getSaveFilePath(tstring& path, LPCTSTR title = _T("±£´æµ½"), LPCTSTR defExt = NULL);
- };
-
-
- class MusicUtils
- {
- public:
- // ²¥·Å±³¾°ÒôÀÖ
- static void playBackgroundMusic(tstring pszFilePath, bool bLoop = true);
- // Í£Ö¹±³¾°ÒôÀÖ
- static void stopBackgroundMusic(bool bReleaseData = false);
- // ÔÝÍ£±³¾°ÒôÀÖ
- static void pauseBackgroundMusic();
- // ¼ÌÐø²¥·Å±³¾°ÒôÀÖ
- static void resumeBackgroundMusic();
- // ´ÓÍ·²¥·Å±³¾°ÒôÀÖ
- static void rewindBackgroundMusic();
- // ±³¾°ÒôÀÖÊÇ·ñÕýÔÚ²¥·Å
- static bool isBackgroundMusicPlaying();
- // ÉèÖñ³¾°ÒôÀÖÒôÁ¿£¬0 ~ 1.0f
- static void setBackgroundMusicVolume(float volume);
-
- // ²¥·ÅÒôЧ
- static unsigned int playMusic(tstring pszFilePath, bool loop = false);
- // Í£Ö¹ÒôЧ
- static void stopMusic(unsigned int nSoundId);
- // Ô¤¼ÓÔØÒôЧ
- static void preloadMusic(tstring pszFilePath);
- // ÔÝÍ£ÒôЧ
- static void pauseMusic(unsigned int nSoundId);
- // ¼ÌÐø²¥·ÅÒôЧ
- static void resumeMusic(unsigned int nSoundId);
- // Ð¶ÔØÒôЧ
- static void unloadMusic(LPCTSTR pszFilePath);
- // ÉèÖÃÌØ¶¨ÒôÀÖµÄÒôÁ¿£¬0 ~ 1.0f
- static void setVolume(tstring pszFilePath, float volume);
-
- // ÔÝÍ£ËùÓÐÒôÀÖ
- static void pauseAllMusics();
- // ¼ÌÐø²¥·ÅËùÓÐÒôÀÖ
- static void resumeAllMusics();
- // Í£Ö¹ËùÓÐÒôÀÖ
- static void stopAllMusics();
- // Í£Ö¹ËùÓÐÒôÀÖ£¬²¢ÊÍ·ÅÄÚ´æ
- static void end();
- // ÉèÖÃ×ÜÒôÁ¿£¬0 ~ 1.0f
- static void setVolume(float volume);
- };
-
-
- class Timer
- {
- friend class App;
-
- public:
- Timer(tstring name, UINT ms, const TIMER_CALLBACK & callback);
- ~Timer();
-
- // Æô¶¯¶¨Ê±Æ÷
- void start();
- // Í£Ö¹¶¨Ê±Æ÷
- void stop();
- // ¶¨Ê±Æ÷ÊÇ·ñÕýÔÚÔËÐÐ
- bool isRunning();
- // ÉèÖüä¸ôʱ¼ä
- void setInterval(UINT ms);
- // ÉèÖûص÷º¯Êý
- void setCallback(const TIMER_CALLBACK& callback);
- // ÉèÖö¨Ê±Æ÷Ãû³Æ
- void setName(tstring name);
- // »ñÈ¡¶¨Ê±Æ÷¼ä¸ôʱ¼ä
- UINT getInterval() const;
- // »ñÈ¡¶¨Ê±Æ÷Ãû³Æ
- tstring getName() const;
-
- // Ìí¼Ó¶¨Ê±Æ÷
- static void addTimer(Timer * timer);
- // Ìí¼Ó¶¨Ê±Æ÷
- static void addTimer(tstring name, UINT ms, const TIMER_CALLBACK & callback);
- // ¸ù¾ÝÃû³Æ»ñÈ¡¶¨Ê±Æ÷
- static Timer * getTimer(tstring name);
- // Æô¶¯Ìض¨¶¨Ê±Æ÷
- static bool startTimer(tstring name);
- // Í£Ö¹ÌØ¶¨¶¨Ê±Æ÷
- static bool stopTimer(tstring name);
- // ɾ³ýÌØ¶¨¶¨Ê±Æ÷
- static bool delTimer(tstring name);
- // ɾ³ýËùÓж¨Ê±Æ÷
- static void clearAllTimers();
-
- protected:
- bool m_bRunning;
- tstring m_sName;
- TIMER_CALLBACK m_callback;
- LARGE_INTEGER m_nLast;
- LARGE_INTEGER m_nAnimationInterval;
- UINT m_nMilliSeconds;
-
- private:
- static void __exec();
- };
-
-
- class ActionManager
- {
- friend class App;
- friend class Sprite;
- public:
- // ¼ÌÐøÒ»¸öÌØ¶¨µÄ¶¯×÷
- static void startAction(Action * action);
- // ¼ÌÐøÒ»¸öÌØ¶¨µÄ¶¯×÷
- static void resumeAction(Action * action);
- // ÔÝÍ£Ò»¸öÌØ¶¨µÄ¶¯×÷
- static void pauseAction(Action * action);
- // Í£Ö¹Ò»¸öÌØ¶¨µÄ¶¯×÷
- static void stopAction(Action * action);
-
- // ¼ÌÐøÒ»¸ö Sprite µÄËùÓж¯×÷
- static void startSpriteAllActions(Sprite * sprite);
- // ¼ÌÐøÒ»¸ö Sprite µÄËùÓж¯×÷
- static void resumeSpriteAllActions(Sprite * sprite);
- // ÔÝÍ£Ò»¸ö Sprite µÄËùÓж¯×÷
- static void pauseSpriteAllActions(Sprite * sprite);
- // Í£Ö¹Ò»¸ö Sprite µÄËùÓж¯×÷
- static void stopSpriteAllActions(Sprite * sprite);
-
- // ¼ÌÐøµ±Ç°´æÔÚµÄËùÓж¯×÷
- static void startAllActions();
- // ¼ÌÐøµ±Ç°´æÔÚµÄËùÓж¯×÷
- static void resumeAllActions();
- // ÔÝÍ£µ±Ç°´æÔÚµÄËùÓж¯×÷
- static void pauseAllActions();
- // Í£Ö¹µ±Ç°´æÔÚµÄËùÓж¯×÷
- static void stopAllActions();
-
- private:
- static void __exec();
- // ½«Ò»¸ö¶¯×÷Ìí¼Ó½ø¶¯×÷¹ÜÀíÆ÷
- static void addAction(Action * action);
- };
-
-} // End of easy2d namespace
\ No newline at end of file
diff --git a/Easy2D/easy2d.h b/Easy2D/easy2d.h
index d95e36a9..fda531fc 100644
--- a/Easy2D/easy2d.h
+++ b/Easy2D/easy2d.h
@@ -16,12 +16,14 @@
#endif
-#include
-#include "e2dmsg.h"
-#include "e2dtool.h"
-#include "e2dstyle.h"
-#include "e2dobj.h"
-#include "e2daction.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
#if defined(UNICODE) && (_DEBUG)
#pragma comment(lib,"Easy2Ddw.lib")
@@ -33,4 +35,1452 @@
#pragma comment(lib,"Easy2D.lib")
#endif
+
+// String macros
+
+#ifdef UNICODE
+ #define tstring std::wstring
+#else
+ #define tstring std::string
+#endif
+
+
+// Safe macros
+
+#define SAFE_DELETE(p) { delete (p); (p) = nullptr; }
+#define SAFE_DELETE_ARRAY(p) { if (p) { delete[] (p); (p) = nullptr; } }
+#define SAFE_RELEASE(p) { if (p) p->release(); }
+
+
+// Type Declare
+
+typedef CPoint CVector;
+typedef unsigned int VK_KEY;
+typedef std::function CLICK_CALLBACK;
+typedef std::function TIMER_CALLBACK;
+typedef std::function KEY_CALLBACK;
+typedef std::function MOUSE_CALLBACK;
+
+
+// Classes Declare
+
+namespace easy2d
+{
+ class App;
+ class Scene;
+
+ class Object;
+ class Node;
+ class FontStyle;
+ class Color;
+ class RectNode;
+ class Text;
+ class Image;
+ class BatchNode;
+ class MouseNode;
+ class Button;
+ class TextButton;
+ class ImageButton;
+ class Layer;
+ class Sprite;
+ class BatchSprite;
+ class Shape;
+ class Circle;
+ class Rectangle;
+
+ class Action;
+ class Animation;
+ class ActionMoveTo;
+ class ActionMoveBy;
+ class ActionScaleTo;
+ class ActionScaleBy;
+ class ActionOpacityTo;
+ class ActionOpacityBy;
+ class ActionFadeIn;
+ class ActionFadeOut;
+ class ActionFrames;
+ class ActionDelay;
+ class ActionCallback;
+ class ActionTwo;
+ class ActionSequence;
+ class ActionNeverStop;
+
+ class MouseMsg;
+ class KeyMsg;
+
+ class FreePool;
+ class FileUtils;
+ class MusicUtils;
+ class ActionManager;
+}
+
+namespace easy2d
+{
+
+class App
+{
+public:
+ App();
+ ~App();
+
+ // ´°¿Ú¿Éѡģʽ
+ enum MODE { SHOW_CONSOLE = 1, NO_CLOSE = 2, NO_MINI_MIZE = 4 };
+
+ // ¶¨Òå»æÍ¼´°¿Ú
+ void createWindow(int width, int height, int mode = 0);
+ // ¶¨Òå»æÍ¼´°¿Ú
+ void createWindow(CSize size, int mode = 0);
+ // ¶¨Òå»æÍ¼´°¿Ú
+ void createWindow(tstring title, int width, int height, int mode = 0);
+ // ¶¨Òå»æÍ¼´°¿Ú
+ void createWindow(tstring title, CSize size, int mode = 0);
+ // Æô¶¯³ÌÐò
+ int run();
+ // ÊÍ·ÅËùÓÐÄÚ´æ×ÊÔ´
+ void free();
+ // Ïú»Ù¸Ã¶ÔÏó
+ void destory();
+
+ // »ñÈ¡³ÌÐòʵÀý
+ static App * get();
+ // ÉèÖÃ×ø±êÔµã
+ static void setOrigin(int originX, int originY);
+ // »ñÈ¡×ø±êÔµãµÄÎïÀíºá×ø±ê
+ static int getOriginX();
+ // »ñÈ¡×ø±êÔµãµÄÎïÀí×Ý×ø±ê
+ static int getOriginY();
+ // ÖÕÖ¹³ÌÐò
+ static void quit();
+ // ÖÕÖ¹³ÌÐò
+ static void end();
+ // Ð޸Ĵ°¿Ú´óС
+ static void setWindowSize(int width, int height);
+ // Ð޸Ĵ°¿Ú´óС
+ static void setWindowSize(CSize size);
+ // ¹Ø±Õ´°¿Ú
+ static void close();
+ // ÉèÖô°¿Ú±êÌâ
+ static void setWindowTitle(tstring title);
+ // »ñÈ¡´°¿Ú±êÌâ
+ static tstring getWindowTitle();
+ // »ñÈ¡´°¿Ú¿í¶È
+ static int getWidth();
+ // »ñÈ¡´°¿Ú¸ß¶È
+ static int getHeight();
+ // Çл»³¡¾°
+ static void enterScene(Scene *scene, bool save = true);
+ // ·µ»ØÉÏÒ»³¡¾°
+ static void backScene();
+ // Çå¿Õ֮ǰ±£´æµÄËùÓг¡¾°
+ static void clearScene();
+ // ÉèÖÃ AppName
+ static void setAppName(tstring appname);
+ // »ñÈ¡ AppName
+ static tstring getAppName();
+ // Ð޸Ĵ°¿Ú±³¾°É«
+ static void setBkColor(COLORREF color);
+ // ÉèÖÃÖ¡ÂÊ
+ static void setFPS(DWORD fps);
+ // ÖØÖûæÍ¼ÑùʽΪĬÈÏÖµ
+ static void reset();
+ // »ñÈ¡µ±Ç°³¡¾°
+ static Scene * getCurrentScene();
+
+protected:
+ tstring m_sTitle;
+ tstring m_sAppName;
+ Scene* m_CurrentScene;
+ Scene* m_NextScene;
+ std::stack m_SceneStack;
+ LARGE_INTEGER m_nAnimationInterval;
+ CSize m_Size;
+ int m_nWindowMode;
+ bool m_bRunning;
+ bool m_bSaveScene;
+
+protected:
+ void _initGraph();
+ void _mainLoop();
+ void _enterNextScene();
+};
+
+class FreePool
+{
+ friend class App;
+ friend class Object;
+
+private:
+ // Ë¢ÐÂÄÚ´æ³Ø
+ static void __flush();
+ // ½«Ò»¸ö½Úµã·ÅÈëÊͷųØ
+ static void __add(Object * nptr);
+};
+
+class Scene
+{
+ friend class App;
+ friend class MouseMsg;
+
+public:
+ Scene();
+ ~Scene();
+
+ // ÖØÐ´Õâ¸öº¯Êý£¬Ëü½«ÔÚ½øÈëÕâ¸ö³¡¾°Ê±×Ô¶¯Ö´ÐÐ
+ virtual void onEnter();
+ // ÖØÐ´Õâ¸öº¯Êý£¬Ëü½«ÔÚÀ뿪Õâ¸ö³¡¾°Ê±×Ô¶¯Ö´ÐÐ
+ virtual void onExit();
+ // Ìí¼Ó×Ó³ÉÔ±µ½³¡¾°
+ void add(Node * child, int zOrder = 0);
+ // ɾ³ý×Ó³ÉÔ±
+ bool del(Node * child);
+ // Çå¿ÕËùÓÐ×Ó³ÉÔ±
+ void clearAllChildren();
+
+protected:
+ std::vector m_vChildren;
+
+protected:
+ void _exec();
+ void _onDraw();
+};
+
+class Object
+{
+ friend class FreePool;
+
+public:
+ Object();
+ virtual ~Object();
+
+ void retain();
+ void release();
+
+protected:
+ int m_nRef;
+};
+
+class MouseMsg
+{
+ friend class App;
+
+public:
+ MouseMsg();
+ MouseMsg(tstring name, const MOUSE_CALLBACK& callback);
+ ~MouseMsg();
+
+ // Ìí¼Ó¼üÅ̼àÌý
+ static void addListener(tstring name, const MOUSE_CALLBACK& callback);
+ // ɾ³ý¼üÅ̼àÌý
+ static bool delListener(tstring name);
+ // ɾ³ýËùÓмüÅ̼àÌý
+ static void clearAllListeners();
+ // ×ó¼üÊÇ·ñ°´ÏÂ
+ static bool isLButtonDown();
+ // ÓÒ¼üÊÇ·ñ°´ÏÂ
+ static bool isRButtonDown();
+ // ÖмüÊÇ·ñ°´ÏÂ
+ static bool isMButtonDown();
+ // »ñÈ¡Êó±êX×ø±ê
+ static int getX();
+ // »ñÈ¡Êó±êY×ø±ê
+ static int getY();
+ // »ñÈ¡Êó±ê×ø±ê
+ static CPoint getPos();
+ // »ñÈ¡Êó±ê¹öÂÖÖµ
+ static int getWheel();
+ // Êó±êÒÆ¶¯ÏûÏ¢
+ static bool isOnMouseMoved();
+ // ×ó¼üË«»÷ÏûÏ¢
+ static bool isOnLButtonDBClicked();
+ // ÓÒ¼ü°´ÏÂÏûÏ¢
+ static bool isOnLButtonDown();
+ // ×ó¼üµ¯ÆðÏûÏ¢
+ static bool isOnLButtonUp();
+ // ÓÒ¼üË«»÷ÏûÏ¢
+ static bool isOnRButtonDBClicked();
+ // ÓÒ¼ü°´ÏÂÏûÏ¢
+ static bool isOnRButtonDown();
+ // ÓÒ¼üµ¯ÆðÏûÏ¢
+ static bool isOnRButtonUp();
+ // ÖмüË«»÷ÏûÏ¢
+ static bool isOnMButtonDBClicked();
+ // Öмü°´ÏÂÏûÏ¢
+ static bool isOnMButtonDown();
+ // Öмüµ¯ÆðÏûÏ¢
+ static bool isOnMButtonUp();
+ // Êó±ê¹öÂÖ²¦¶¯ÏûÏ¢
+ static bool isOnWheel();
+ // Çå¿ÕÊó±êÏûÏ¢
+ static void resetMouseMsg();
+
+private:
+ static void __exec();
+
+protected:
+ tstring m_sName;
+ MOUSE_CALLBACK m_callback;
+
+protected:
+ // Ö´Ðлص÷º¯Êý
+ void onMouseMsg();
+};
+
+class KeyMsg
+{
+ friend class App;
+
+public:
+ KeyMsg(tstring name, const KEY_CALLBACK& callback);
+ ~KeyMsg();
+
+ // Ö´Ðлص÷º¯Êý
+ void onKbHit(VK_KEY key);
+
+ // Ìí¼Ó¼üÅ̼àÌý
+ static void addListener(tstring name, const KEY_CALLBACK& callback);
+ // ɾ³ý¼üÅ̼àÌý
+ static bool delListener(tstring name);
+ // ɾ³ýËùÓмüÅ̼àÌý
+ static void clearAllListeners();
+ // ÅжϼüÊÇ·ñ±»°´Ï£¬°´Ï·µ»Øtrue
+ static bool isKeyDown(VK_KEY key);
+
+public:
+ // ×Öĸ¼üÖµ
+ static const VK_KEY A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z;
+ // Êý×Ö¼üÖµ
+ static const VK_KEY NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9, NUM_0;
+ // СÊý×Ö¼üÅÌÖµ
+ static const VK_KEY NUMPAD_1, NUMPAD_2, NUMPAD_3, NUMPAD_4, NUMPAD_5, NUMPAD_6, NUMPAD_7, NUMPAD_8, NUMPAD_9, NUMPAD_0;
+ // ¿ØÖƼüÖµ
+ static const VK_KEY Enter, Space, Up, Down, Left, Right, Esc, Shift, LShift, RShift, Ctrl, LCtrl, RCtrl;
+ // F ¼üÖµ
+ static const VK_KEY F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12;
+
+private:
+ static void __exec();
+
+protected:
+ tstring m_sName;
+ KEY_CALLBACK m_callback;
+};
+
+class FontStyle :
+ public Object
+{
+ friend class Text;
+
+public:
+ FontStyle();
+ /**
+ * ʹÓà [×ÖÌåÃû³Æ¡¢×ֺš¢´Öϸ¡¢×Ö¿í¡¢Ð±Ì塢ϻ®Ïß¡¢É¾³ýÏß¡¢×Ö·û´®Êéд½Ç¶È¡¢
+ * ÿ¸ö×Ö·ûÊéд½Ç¶È¡¢¿¹¾â³Ý] ÊôÐÔ´´½¨×ÖÌåÑùʽ
+ */
+ FontStyle(LPCTSTR fontfamily, LONG height = 18, LONG weight = 0, LONG width = 0,
+ bool italic = 0, bool underline = 0, bool strikeout = 0, LONG escapement = 0,
+ LONG orientation = 0, bool quality = true);
+ virtual ~FontStyle();
+
+ // »ñȡĬÈÏ×ÖÌå
+ static FontStyle * getDefault();
+ // ÉèÖÃ×Ö·ûƽ¾ù¸ß¶È
+ void setHeight(LONG value);
+ // ÉèÖÃ×Ö·ûƽ¾ù¿í¶È£¨0±íʾ×ÔÊÊÓ¦£©
+ void setWidth(LONG value);
+ // ÉèÖÃ×ÖÌå
+ void setFontFamily(LPCTSTR value);
+ // ÉèÖÃ×Ö·û±Ê»´Öϸ£¬·¶Î§0~1000£¬Ä¬ÈÏΪ0
+ void setWeight(LONG value);
+ // ÉèÖÃбÌå
+ void setItalic(bool value);
+ // ÉèÖÃÏ»®Ïß
+ void setUnderline(bool value);
+ // ÉèÖÃɾ³ýÏß
+ void setStrikeOut(bool value);
+ // ÉèÖÃ×Ö·û´®µÄÊéд½Ç¶È£¬µ¥Î»0.1¶È£¬Ä¬ÈÏΪ0
+ void setEscapement(LONG value);
+ // ÉèÖÃÿ¸ö×Ö·ûµÄÊéд½Ç¶È£¬µ¥Î»0.1¶È£¬Ä¬ÈÏΪ0
+ void setOrientation(LONG value);
+ // ÉèÖÃ×ÖÌ忹¾â³Ý£¬Ä¬ÈÏΪtrue
+ void setQuality(bool value);
+
+protected:
+ LOGFONT m_font;
+};
+
+class FontWeight
+{
+public:
+ static const LONG dontcare; // ´Öϸֵ 0
+ static const LONG thin; // ´Öϸֵ 100
+ static const LONG extraLight; // ´Öϸֵ 200
+ static const LONG light; // ´Öϸֵ 300
+ static const LONG normal; // ´Öϸֵ 400
+ static const LONG regular; // ´Öϸֵ 400
+ static const LONG medium; // ´Öϸֵ 500
+ static const LONG demiBlod; // ´Öϸֵ 600
+ static const LONG blod; // ´Öϸֵ 700
+ static const LONG extraBold; // ´Öϸֵ 800
+ static const LONG black; // ´Öϸֵ 900
+ static const LONG heavy; // ´Öϸֵ 900
+};
+
+class Color
+{
+public:
+ static const COLORREF black; // ºÚÉ«
+ static const COLORREF blue; // À¶É«
+ static const COLORREF green; // ÂÌÉ«
+ static const COLORREF cyan; // ÇàÉ«
+ static const COLORREF red; // ºìÉ«
+ static const COLORREF magenta; // ×ÏÉ«
+ static const COLORREF brown; // רɫ
+ static const COLORREF lightgray; // ÁÁ»ÒÉ«
+ static const COLORREF darkgray; // Éî»ÒÉ«
+ static const COLORREF lightblue; // ÁÁÀ¶É«
+ static const COLORREF lightgreen; // ÁÁÂÌÉ«
+ static const COLORREF lightcyan; // ÁÁÇàÉ«
+ static const COLORREF lightred; // ÁÁºìÉ«
+ static const COLORREF lightmagenta; // ÁÁ×ÏÉ«
+ static const COLORREF yellow; // ÁÁ»ÆÉ«
+ static const COLORREF white; // °×É«
+
+ // ͨ¹ýºì¡¢ÂÌ¡¢À¶ÑÕÉ«·ÖÁ¿ºÏ³ÉÑÕÉ«
+ static COLORREF getFromRGB(BYTE r, BYTE g, BYTE b);
+ // ͨ¹ýÉ«Ïà¡¢±¥ºÍ¶È¡¢ÁÁ¶ÈºÏ³ÉÑÕÉ«
+ static COLORREF getFromHSL(float H, float S, float L);
+ // ͨ¹ýÉ«Ïà¡¢±¥ºÍ¶È¡¢Ã÷¶ÈºÏ³ÉÑÕÉ«
+ static COLORREF getFromHSV(float H, float S, float V);
+
+ // ·µ»ØÖ¸¶¨ÑÕÉ«Öеĺìɫֵ
+ static BYTE getRValue(COLORREF color);
+ // ·µ»ØÖ¸¶¨ÑÕÉ«ÖеÄÂÌɫֵ
+ static BYTE getGValue(COLORREF color);
+ // ·µ»ØÖ¸¶¨ÑÕÉ«ÖеÄÀ¶É«Öµ
+ static BYTE getBValue(COLORREF color);
+ // ·µ»ØÓëÖ¸¶¨ÑÕÉ«¶ÔÓ¦µÄ»Ò¶ÈÖµÑÕÉ«
+ static COLORREF getGray(COLORREF color);
+};
+
+class Node :
+ public Object
+{
+ friend class Scene;
+ friend class BatchNode;
+
+public:
+ Node();
+ Node(CPoint p);
+ Node(int x, int y);
+ virtual ~Node();
+
+ // »ñÈ¡½Úµãºá×ø±ê
+ virtual int getX() const;
+ // »ñÈ¡½Úµã×Ý×ø±ê
+ virtual int getY() const;
+ // »ñÈ¡½Úµã×ø±ê
+ virtual CPoint getPos() const;
+ // ÉèÖýڵãºá×ø±ê
+ virtual void setX(int x);
+ // ÉèÖýڵã×Ý×ø±ê
+ virtual void setY(int y);
+ // ÉèÖýڵãºá×Ý×ø±ê
+ virtual void setPos(int x, int y);
+ // ÉèÖýڵãºá×Ý×ø±ê
+ virtual void setPos(CPoint p);
+ // ÒÆ¶¯½Úµã
+ virtual void move(int x, int y);
+ // ÉèÖýڵãºá×Ý×ø±ê
+ virtual void move(CVector v);
+ // ½ÚµãÊÇ·ñÏÔʾ
+ virtual bool display() const;
+ // ÉèÖýڵãÊÇ·ñÏÔʾ
+ virtual void setDisplay(bool value);
+ // »ñÈ¡½Úµã»æÍ¼Ë³Ðò
+ virtual int getZOrder() const;
+ // ÉèÖÃ½Úµã»æÍ¼Ë³Ðò£¨0Ϊ×îÏÈ»æÖÆ£¬ÏÔʾÔÚ×îµ×²ã£©
+ virtual void setZOrder(int z);
+ // »ñÈ¡½ÚµãËùÔÚ³¡¾°
+ Scene * getParentScene();
+
+protected:
+ int m_nZOrder;
+ bool m_bDisplay;
+ Scene* m_pScene;
+ CPoint m_Pos;
+
+protected:
+ virtual bool _exec(bool active);
+ virtual void _onDraw() = 0;
+ void setParentScene(Scene * scene);
+};
+
+class BatchNode :
+ public Node
+{
+public:
+ BatchNode();
+ virtual ~BatchNode();
+
+ // Ìí¼Ó×Ó½Úµã
+ void add(Node *child, int z_Order = 0);
+ // ɾ³ý×Ó½Úµã
+ bool del(Node * child);
+ // Çå¿ÕËùÓÐ×Ó½Úµã
+ void clearAllChildren();
+
+protected:
+ std::vector m_vChildren;
+
+protected:
+ virtual bool _exec(bool active) override;
+ virtual void _onDraw() override;
+};
+
+class Layer :
+ public BatchNode
+{
+public:
+ Layer();
+ virtual ~Layer();
+
+ // ͼ²ãÊÇ·ñ×èÈûÏûÏ¢
+ int getBlock() const;
+ // ÉèÖÃͼ²ãÊÇ·ñ×èÈûÏûÏ¢
+ void setBlock(bool block);
+
+protected:
+ bool m_bBlock;
+
+protected:
+ virtual bool _exec(bool active) override;
+};
+
+class RectNode :
+ public Node
+{
+public:
+ RectNode();
+ ~RectNode();
+
+ virtual bool isCollisionWith(RectNode * rectNode) const;
+ virtual bool isPointIn(CPoint p) const;
+
+ virtual void setWindowCenterX();
+ virtual void setWindowCenterY();
+ virtual void setWindowCenter();
+
+ virtual int getX() const override;
+ virtual int getY() const override;
+ virtual CPoint getPos() const override;
+ virtual int getWidth() const;
+ virtual int getHeight() const;
+ virtual CSize getSize() const;
+ virtual CRect getRect() const;
+
+ virtual void setX(int x) override;
+ virtual void setY(int y) override;
+ virtual void setPos(int x, int y) override;
+ virtual void setPos(CPoint p) override;
+ virtual void move(int x, int y) override;
+ virtual void move(CVector v) override;
+ virtual void setWidth(int width);
+ virtual void setHeight(int height);
+ virtual void setSize(int width, int height);
+ virtual void setSize(CSize size);
+ virtual void setRect(int x1, int y1, int x2, int y2);
+ virtual void setRect(CPoint leftTop, CPoint rightBottom);
+ virtual void setRect(CRect rect);
+
+protected:
+ CRect m_Rect;
+};
+
+class Text :
+ public RectNode
+{
+ friend class TextButton;
+
+public:
+ Text();
+ // ¸ù¾Ý×Ö·û´®¡¢ÑÕÉ«ºÍ×ÖÌå´´½¨ÎÄ×Ö
+ Text(tstring text, COLORREF color = Color::white, FontStyle * font = FontStyle::getDefault());
+ // ¸ù¾Ýºá×Ý×ø±ê¡¢×Ö·û´®¡¢ÑÕÉ«ºÍ×ÖÌå´´½¨ÎÄ×Ö
+ Text(int x, int y, tstring text, COLORREF color = Color::white, FontStyle * font = FontStyle::getDefault());
+ virtual ~Text();
+
+ // »ñÈ¡µ±Ç°ÑÕÉ«
+ COLORREF getColor() const;
+ // »ñÈ¡µ±Ç°ÎÄ×Ö
+ tstring getText() const;
+ // »ñÈ¡µ±Ç°×ÖÌå
+ FontStyle * getFontStyle();
+ // Îı¾ÊÇ·ñΪ¿Õ
+ bool isEmpty() const;
+
+ // ÉèÖÃÎÄ×Ö
+ void setText(tstring text);
+ // ÉèÖÃÎÄ×ÖÑÕÉ«
+ void setColor(COLORREF color);
+ // ÉèÖÃ×ÖÌå
+ void setFontStyle(FontStyle * style);
+
+protected:
+ tstring m_sText;
+ COLORREF m_color;
+ FontStyle * m_pFontStyle;
+
+protected:
+ virtual void _onDraw() override;
+};
+
+class Image :
+ public RectNode
+{
+ friend class Sprite;
+ friend class ImageButton;
+public:
+ Image();
+ // ´ÓͼƬÎļþ»ñȡͼÏñ
+ Image(LPCTSTR ImageFile);
+ /**
+ * ´ÓͼƬÎļþ»ñȡͼÏñ
+ * ²ÎÊý£ºÍ¼Æ¬ÎļþÃû£¬Í¼Æ¬²Ã¼ô×ø±ê£¬Í¼Æ¬²Ã¼ô¿í¶ÈºÍ¸ß¶È
+ */
+ Image(LPCTSTR ImageFile, int x, int y, int width, int height);
+ virtual ~Image();
+
+ // »ñÈ¡ºáÏòÀÉì±ÈÀý
+ float getScaleX() const;
+ // »ñÈ¡×ÝÏòÀÉì±ÈÀý
+ float getScaleY() const;
+ // »ñȡ͸Ã÷¶È
+ float getOpacity() const;
+
+ /**
+ * ´ÓͼƬÎļþ»ñȡͼÏñ
+ * ·µ»ØÖµ£ºÍ¼Æ¬¼ÓÔØÊÇ·ñ³É¹¦
+ */
+ bool setImage(LPCTSTR ImageFile);
+ /**
+ * ´ÓͼƬÎļþ»ñȡͼÏñ
+ * ²ÎÊý£ºÍ¼Æ¬ÎļþÃû£¬Í¼Æ¬²Ã¼ôÆðÊ¼×ø±ê£¬Í¼Æ¬²Ã¼ô¿í¶ÈºÍ¸ß¶È
+ * ·µ»ØÖµ£ºÍ¼Æ¬¼ÓÔØÊÇ·ñ³É¹¦
+ */
+ bool setImage(LPCTSTR ImageFile, int x, int y, int width, int height);
+ /**
+ * ´Ó×ÊÔ´Îļþ»ñȡͼÏñ£¬²»Ö§³Ö png
+ * ·µ»ØÖµ£ºÍ¼Æ¬¼ÓÔØÊÇ·ñ³É¹¦
+ */
+ bool setImageFromRes(LPCTSTR pResName);
+ /**
+ * ´Ó×ÊÔ´Îļþ»ñȡͼÏñ£¬²»Ö§³Ö png
+ * ²ÎÊý£º×ÊÔ´Ãû³Æ£¬Í¼Æ¬²Ã¼ô×ø±ê£¬Í¼Æ¬²Ã¼ô¿í¶ÈºÍ¸ß¶È
+ * ·µ»ØÖµ£ºÍ¼Æ¬¼ÓÔØÊÇ·ñ³É¹¦
+ */
+ bool setImageFromRes(LPCTSTR pResName, int x, int y, int width, int height);
+ // ²Ã¼ôͼƬ£¨²Ã¼ôºó»á»Ö¸´ stretch ÀÉ죩
+ void crop(int x, int y, int width, int height);
+ // ½«Í¼Æ¬ÀÉìµ½¹Ì¶¨¿í¸ß
+ void stretch(int width, int height);
+ // °´±ÈÀýÀÉìͼƬ
+ void setScale(float scaleX, float scaleY);
+ // ÉèÖÃ͸Ã÷¶È£¬·¶Î§ 0~1.0f£¨Ö»¶Ô png ͼƬÉúЧ£©
+ void setOpacity(float value);
+ // ÉèÖÃ͸Ã÷É«
+ void setTransparentColor(COLORREF value);
+ // ÖØÖÃͼƬÊôÐÔ
+ void reset();
+ // ±£´æÓÎÏ·½ØÍ¼
+ static void saveScreenshot();
+
+protected:
+ CImage m_Image;
+ CRect m_SrcRect;
+ BYTE m_nAlpha;
+ float m_fScaleX;
+ float m_fScaleY;
+
+protected:
+ virtual void _onDraw() override;
+};
+
+class Sprite :
+ public RectNode
+{
+ friend class BatchSprite;
+public:
+ Sprite();
+ Sprite(Image * image);
+ Sprite(LPCTSTR imageFileName);
+ virtual ~Sprite();
+
+ // ÅжÏÊÇ·ñºÍÁíÒ»¸ö¾«ÁéÅöײ
+ bool isCollisionWith(Sprite * sprite);
+ // Ð޸ľ«ÁéͼƬ
+ virtual void setImage(Image * image);
+ // Ìí¼Ó¶¯×÷
+ virtual void addAction(Action * action);
+ // ÔÝÍ£ËùÓж¯×÷
+ virtual void pauseAllAction();
+ // ¼ÌÐøËùÓж¯×÷
+ virtual void resumeAllAction();
+ // Í£Ö¹ËùÓж¯×÷
+ virtual void stopAllAction();
+
+ virtual float getScaleX() const;
+ virtual float getScaleY() const;
+ virtual float getOpacity() const;
+
+ virtual void setScale(float scaleX, float scaleY);
+ virtual void setOpacity(float opacity);
+
+protected:
+ float m_fScaleX;
+ float m_fScaleY;
+ BYTE m_nAlpha;
+ Image * m_pImage;
+
+protected:
+ bool _exec(bool active) override;
+ void _onDraw() override;
+};
+
+class BatchSprite :
+ public Node
+{
+public:
+ BatchSprite();
+ virtual ~BatchSprite();
+
+ // Ìí¼Ó¾«Áé
+ void addSprite(Sprite * sprite, int z_Order = 0);
+ // ɾ³ý¾«Áé
+ bool delSprite(Sprite * child);
+ // ɾ³ýËùÓо«Áé
+ void clearAllSprites();
+ // ÅжÏÊÇ·ñÓо«Áé²úÉúÅöײ
+ // ·µ»ØÖµ£ºÈôÓÐÅöײ£¬·µ»ØµÚÒ»¸ö²úÉúÅöײµÄ¾«Á飬·ñÔò·µ»Ø¿ÕÖ¸Õë
+ Sprite * isCollisionWith(Sprite * sprite);
+ // ÅжϵãÊÇ·ñÔÚ¾«ÁéÄÚ²¿
+ // ·µ»ØÖµ£ºÈôÕâ¸öµãÔÚÈÎÒâÒ»¸ö¾«ÁéÄÚ²¿£¬·µ»ØÕâ¸ö¾«Á飬·ñÔò·µ»Ø¿ÕÖ¸Õë
+ Sprite * isPointIn(CPoint point);
+ // ͬʱÐÞ¸ÄËùÓо«ÁéµÄͼƬ
+ virtual void setImage(Image * image);
+
+ virtual float getScaleX() const;
+ virtual float getScaleY() const;
+ virtual float getOpacity() const;
+
+ virtual void setScale(float scaleX, float scaleY);
+ virtual void setOpacity(float opacity);
+
+protected:
+ std::vector m_vSprites;
+ float m_fScaleX;
+ float m_fScaleY;
+ BYTE m_nAlpha;
+
+protected:
+ bool _exec(bool active) override;
+ void _onDraw() override;
+};
+
+class MouseNode :
+ public RectNode
+{
+public:
+ MouseNode();
+ virtual ~MouseNode();
+
+ // Êó±êÊÇ·ñÒÆÈë
+ virtual bool isMouseIn();
+ // Êó±êÊÇ·ñÑ¡ÖÐ
+ virtual bool isSelected();
+ // ÉèÖûص÷º¯Êý
+ virtual void setClickedCallback(const CLICK_CALLBACK & callback);
+ // ÉèÖûص÷º¯Êý
+ virtual void setMouseInCallback(const CLICK_CALLBACK & callback);
+ // ÉèÖûص÷º¯Êý
+ virtual void setMouseOutCallback(const CLICK_CALLBACK & callback);
+ // ÉèÖûص÷º¯Êý
+ virtual void setSelectCallback(const CLICK_CALLBACK & callback);
+ // ÉèÖûص÷º¯Êý
+ virtual void setUnselectCallback(const CLICK_CALLBACK & callback);
+ // ÖØÖÃ״̬
+ virtual void reset();
+ // ÉèÖýڵãÊÇ·ñ×èÈûÊó±êÏûÏ¢
+ void setBlock(bool block);
+
+protected:
+ bool m_bTarget;
+ bool m_bBlock;
+ enum Status { NORMAL, MOUSEIN, SELECTED } m_eStatus;
+ CLICK_CALLBACK m_OnMouseInCallback;
+ CLICK_CALLBACK m_OnMouseOutCallback;
+ CLICK_CALLBACK m_OnSelectCallback;
+ CLICK_CALLBACK m_OnUnselectCallback;
+ CLICK_CALLBACK m_ClickCallback;
+
+protected:
+ virtual bool _exec(bool active) override;
+ virtual void _onDraw() override;
+
+ // ÖØÐ´Õâ¸ö·½·¨¿ÉÒÔ×Ô¶¨Òå°´Å¥µÄÅжϷ½·¨
+ virtual bool _isMouseIn();
+ // Çл»×´Ì¬
+ virtual void _setStatus(Status status);
+ // Õý³£×´Ì¬
+ virtual void _onNormal() = 0;
+ // Êó±êÒÆÈëʱ
+ virtual void _onMouseIn() = 0;
+ // Êó±êÑ¡ÖÐʱ
+ virtual void _onSelected() = 0;
+};
+
+class Button :
+ public MouseNode
+{
+public:
+ Button();
+ virtual ~Button();
+
+ // °´Å¥ÊÇ·ñÆôÓÃ
+ virtual bool isEnable();
+ // ÉèÖÃÊÇ·ñÆôÓÃ
+ virtual void setEnable(bool enable);
+
+ // ÉèÖð´Å¥ºá×ø±ê
+ virtual void setX(int x) override;
+ // ÉèÖð´Å¥×Ý×ø±ê
+ virtual void setY(int y) override;
+ // ÉèÖð´Å¥×ø±ê
+ virtual void setPos(int x, int y) override;
+ // ÉèÖð´Å¥×ø±ê
+ virtual void setPos(CPoint p) override;
+ // ÒÆ¶¯°´Å¥
+ virtual void move(int x, int y) override;
+ // ÒÆ¶¯°´Å¥
+ virtual void move(CVector v) override;
+
+protected:
+ bool m_bEnable;
+
+protected:
+ virtual bool _exec(bool active) override;
+ virtual void _onDraw() override;
+ virtual void _resetPosition() = 0;
+
+ virtual void _onNormal() = 0;
+ virtual void _onMouseIn() = 0;
+ virtual void _onSelected() = 0;
+ virtual void _onDisable() = 0;
+};
+
+class TextButton :
+ public Button
+{
+public:
+ TextButton();
+ TextButton(tstring text);
+ TextButton(Text * text);
+ virtual ~TextButton();
+
+ // ÉèÖð´Å¥ÎÄ×Ö
+ void setNormal(Text * text);
+ // ÉèÖÃÊó±êÒÆÈëʱµÄ°´Å¥ÎÄ×Ö
+ void setMouseIn(Text * text);
+ // ÉèÖÃÊó±êÑ¡ÖÐʱµÄ°´Å¥ÎÄ×Ö
+ void setSelected(Text * text);
+ // ÉèÖð´Å¥½ûÓÃʱµÄ°´Å¥ÎÄ×Ö
+ void setUnable(Text * text);
+
+protected:
+ Text * m_pNormalText;
+ Text * m_pMouseInText;
+ Text * m_pSelectedText;
+ Text * m_pUnableText;
+
+protected:
+ virtual void _resetPosition() override;
+
+ virtual void _setStatus(Status status) override;
+ virtual void _onNormal() override;
+ virtual void _onMouseIn() override;
+ virtual void _onSelected() override;
+ virtual void _onDisable() override;
+};
+
+class ImageButton :
+ public Button
+{
+public:
+ ImageButton();
+ ImageButton(LPCTSTR image);
+ ImageButton(Image * image);
+ virtual ~ImageButton();
+
+ // ÉèÖð´Å¥Í¼Æ¬
+ void setNormal(Image * image);
+ // ÉèÖÃÊó±êÒÆÈëʱµÄ°´Å¥Í¼Æ¬
+ void setMouseIn(Image * image);
+ // ÉèÖÃÊó±êÑ¡ÖÐʱµÄ°´Å¥Í¼Æ¬
+ void setSelected(Image * image);
+ // ÉèÖð´Å¥½ûÓÃʱµÄ°´Å¥Í¼Æ¬
+ void setUnable(Image * image);
+
+protected:
+ Image * m_pNormalImage;
+ Image * m_pMouseInImage;
+ Image * m_pSelectedImage;
+ Image * m_pUnableImage;
+
+protected:
+ virtual void _resetPosition() override;
+ virtual void _setStatus(Status status) override;
+ virtual void _onNormal() override;
+ virtual void _onMouseIn() override;
+ virtual void _onSelected() override;
+ virtual void _onDisable() override;
+};
+
+class Shape :
+ public Node
+{
+public:
+ Shape();
+ virtual ~Shape();
+
+ // ÐÎ×´Ìî³äÑùʽ
+ enum STYLE { ROUND, SOLID, FILL } m_eStyle;
+
+ // »ñÈ¡ÐÎ×´µÄÌî³äÑÕÉ«
+ COLORREF getFillColor() const;
+ // »ñÈ¡ÐÎ×´µÄÏßÌõÑÕÉ«
+ COLORREF getLineColor() const;
+ // ÉèÖÃÌî³äÑÕÉ«
+ void setFillColor(COLORREF color);
+ // ÉèÖÃÏßÌõÑÕÉ«
+ void setLineColor(COLORREF color);
+ // ÉèÖÃÌî³äÑùʽ
+ void setStyle(STYLE style);
+
+protected:
+ COLORREF fillColor;
+ COLORREF lineColor;
+
+protected:
+ virtual void _onDraw() override;
+ virtual void solidShape() = 0;
+ virtual void fillShape() = 0;
+ virtual void roundShape() = 0;
+};
+
+class Rect :
+ public Shape
+{
+public:
+ Rect();
+ Rect(int x, int y, int width, int height);
+ virtual ~Rect();
+
+ // »ñÈ¡¾ØÐοí¶È
+ int getWidth() const;
+ // »ñÈ¡¾ØÐθ߶È
+ int getHeight() const;
+ // ÉèÖþØÐοí¶È
+ void setWidth(int width);
+ // ÉèÖþØÐθ߶È
+ void setHeight(int height);
+ // ÉèÖþØÐδóС
+ void setSize(int width, int height);
+
+protected:
+ CSize m_Size;
+
+protected:
+ virtual void solidShape() override;
+ virtual void fillShape() override;
+ virtual void roundShape() override;
+};
+
+class Circle :
+ public Shape
+{
+public:
+ Circle();
+ Circle(int x, int y, int radius);
+ virtual ~Circle();
+
+ // »ñȡԲÐΰ뾶
+ int getRadius() const;
+ // ÉèÖÃÔ²Ðΰ뾶
+ void setRadius(int m_nRadius);
+
+protected:
+ int m_nRadius;
+
+protected:
+ virtual void solidShape() override;
+ virtual void fillShape() override;
+ virtual void roundShape() override;
+};
+
+class Action :
+ public Object
+{
+ friend class Sprite;
+ friend class ActionManager;
+ friend class ActionTwo;
+ friend class ActionNeverStop;
+ friend class ActionSequence;
+public:
+ Action();
+ virtual ~Action();
+
+ bool isRunning();
+ void start();
+ void resume();
+ void pause();
+ void stop();
+ void setInterval(UINT ms);
+ virtual Action * copy() = 0;
+ virtual Action * reverse() const;
+
+protected:
+ bool m_bRunning;
+ bool m_bStop;
+ Sprite * m_pParent;
+ UINT m_nMilliSeconds;
+ LARGE_INTEGER m_nLast;
+ LARGE_INTEGER m_nAnimationInterval;
+
+protected:
+ virtual void _init() = 0;
+ virtual bool _exec(LARGE_INTEGER nNow) = 0;
+ virtual void _reset() = 0;
+};
+
+class Animation :
+ public Action
+{
+public:
+ Animation(float duration);
+ virtual ~Animation();
+
+protected:
+ UINT m_nDuration;
+ UINT m_nTotalDuration;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionMoveBy :
+ public Animation
+{
+public:
+ ActionMoveBy(float duration, CVector vec);
+ virtual ~ActionMoveBy();
+
+ virtual ActionMoveBy * copy() override;
+ virtual ActionMoveBy * reverse() const override;
+
+protected:
+ CPoint m_BeginPos;
+ CVector m_MoveVector;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionMoveTo :
+ public ActionMoveBy
+{
+public:
+ ActionMoveTo(float duration, CPoint pos);
+ virtual ~ActionMoveTo();
+
+ virtual ActionMoveTo * copy() override;
+
+protected:
+ CPoint m_EndPos;
+
+protected:
+ virtual void _init() override;
+ virtual void _reset() override;
+};
+
+class ActionScaleBy :
+ public Animation
+{
+public:
+ ActionScaleBy(float duration, float scaleX, float scaleY);
+ virtual ~ActionScaleBy();
+
+ virtual ActionScaleBy * copy() override;
+ virtual ActionScaleBy * reverse() const override;
+
+protected:
+ float m_nBeginScaleX;
+ float m_nBeginScaleY;
+ float m_nVariationX;
+ float m_nVariationY;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionScaleTo :
+ public ActionScaleBy
+{
+public:
+ ActionScaleTo(float duration, float scaleX, float scaleY);
+ virtual ~ActionScaleTo();
+
+ virtual ActionScaleTo * copy() override;
+
+protected:
+ float m_nEndScaleX;
+ float m_nEndScaleY;
+
+protected:
+ virtual void _init() override;
+ virtual void _reset() override;
+};
+
+class ActionOpacityBy :
+ public Animation
+{
+public:
+ ActionOpacityBy(float duration, float opacity);
+ virtual ~ActionOpacityBy();
+
+ virtual ActionOpacityBy * copy() override;
+ virtual ActionOpacityBy * reverse() const override;
+
+protected:
+ float m_nBeginVal;
+ float m_nVariation;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionOpacityTo :
+ public ActionOpacityBy
+{
+public:
+ ActionOpacityTo(float duration, float opacity);
+ virtual ~ActionOpacityTo();
+
+ virtual ActionOpacityTo * copy() override;
+
+protected:
+ float m_nEndVal;
+
+protected:
+ virtual void _init() override;
+ virtual void _reset() override;
+};
+
+class ActionFadeIn :
+ public ActionOpacityTo
+{
+public:
+ ActionFadeIn(float duration) : ActionOpacityTo(duration, 1) {}
+};
+
+class ActionFadeOut :
+ public ActionOpacityTo
+{
+public:
+ ActionFadeOut(float duration) : ActionOpacityTo(duration, 0) {}
+};
+
+class ActionTwo :
+ public Action
+{
+public:
+ ActionTwo(Action * actionFirst, Action * actionSecond);
+ virtual ~ActionTwo();
+
+ virtual ActionTwo * copy() override;
+ virtual ActionTwo * reverse() const override;
+
+protected:
+ Action * m_FirstAction;
+ Action * m_SecondAction;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionSequence :
+ public Action
+{
+public:
+ ActionSequence(int number, Action * action1, ...);
+ virtual ~ActionSequence();
+
+ virtual ActionSequence * copy() override;
+ virtual ActionSequence * reverse() const override;
+
+protected:
+ UINT m_nActionIndex;
+ std::vector m_vActions;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionDelay :
+ public Action
+{
+public:
+ ActionDelay(float duration);
+ virtual ~ActionDelay();
+
+ virtual ActionDelay * copy() override;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionNeverStop :
+ public Action
+{
+public:
+ ActionNeverStop(Action * action);
+ virtual ~ActionNeverStop();
+
+ virtual ActionNeverStop * copy() override;
+
+protected:
+ Action * m_Action;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionFrames :
+ public Action
+{
+public:
+ ActionFrames();
+ ~ActionFrames();
+
+ void addFrame(Image * frame);
+ virtual ActionFrames * copy() override;
+ virtual ActionFrames * reverse() const override;
+
+protected:
+ UINT m_nFrameIndex;
+ std::vector m_vFrames;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class ActionCallback :
+ public Action
+{
+public:
+ ActionCallback(const std::function& callback);
+ ~ActionCallback();
+
+ virtual ActionCallback * copy() override;
+
+protected:
+ std::function m_Callback;
+
+protected:
+ virtual void _init() override;
+ virtual bool _exec(LARGE_INTEGER nNow) override;
+ virtual void _reset() override;
+};
+
+class FileUtils
+{
+public:
+ // »ñȡϵͳµÄ AppData\Local ·¾¶
+ static tstring getLocalAppDataPath();
+ // »ñȡĬÈϵı£´æÂ·¾¶
+ static tstring getDefaultSavePath();
+ // ±£´æ int Ð͵ÄÖµ
+ static void saveInt(LPCTSTR key, int value);
+ // ±£´æ double Ð͵ÄÖµ
+ static void saveDouble(LPCTSTR key, double value);
+ // ±£´æ ×Ö·û´® Ð͵ÄÖµ£¨²»ÒªÔÚ Unicode ×Ö·û¼¯Ï±£´æÖÐÎÄ×Ö·û£©
+ static void saveString(LPCTSTR key, tstring value);
+ // »ñÈ¡ int Ð͵ÄÖµ£¨Èô²»´æÔÚÔò·µ»Ø default ²ÎÊýµÄÖµ£©
+ static int getInt(LPCTSTR key, int default);
+ // »ñÈ¡ double Ð͵ÄÖµ£¨Èô²»´æÔÚÔò·µ»Ø default ²ÎÊýµÄÖµ£©
+ static double getDouble(LPCTSTR key, double default);
+ // »ñÈ¡ ×Ö·û´® Ð͵ÄÖµ£¨Èô²»´æÔÚÔò·µ»Ø default ²ÎÊýµÄÖµ£©
+ static tstring getString(LPCTSTR key, tstring default);
+ // µÃµ½ÎļþÀ©Õ¹Ãû£¨Ð¡Ð´£©
+ static tstring getFileExtension(const tstring& filePath);
+ /**
+ * ´ò¿ª±£´æÎļþ¶Ô»°¿ò£¬µÃµ½ÓÐЧ±£´æÂ·¾¶·µ»Ø true
+ * ²ÎÊý£º·µ»ØÎļþ·¾¶µÄ×Ö·û´®£¬´°¿Ú±êÌ⣬ÉèÖÃÀ©Õ¹Ãû¹ýÂË£¬ÉèÖÃĬÈÏÀ©Õ¹Ãû
+ */
+ static bool getSaveFilePath(tstring& path, LPCTSTR title = _T("±£´æµ½"), LPCTSTR defExt = NULL);
+};
+
+class MusicUtils
+{
+public:
+ // ²¥·Å±³¾°ÒôÀÖ
+ static void playBackgroundMusic(tstring pszFilePath, bool bLoop = true);
+ // Í£Ö¹±³¾°ÒôÀÖ
+ static void stopBackgroundMusic(bool bReleaseData = false);
+ // ÔÝÍ£±³¾°ÒôÀÖ
+ static void pauseBackgroundMusic();
+ // ¼ÌÐø²¥·Å±³¾°ÒôÀÖ
+ static void resumeBackgroundMusic();
+ // ´ÓÍ·²¥·Å±³¾°ÒôÀÖ
+ static void rewindBackgroundMusic();
+ // ±³¾°ÒôÀÖÊÇ·ñÕýÔÚ²¥·Å
+ static bool isBackgroundMusicPlaying();
+ // ÉèÖñ³¾°ÒôÀÖÒôÁ¿£¬0 ~ 1.0f
+ static void setBackgroundMusicVolume(float volume);
+
+ // ²¥·ÅÒôЧ
+ static unsigned int playMusic(tstring pszFilePath, bool loop = false);
+ // Í£Ö¹ÒôЧ
+ static void stopMusic(unsigned int nSoundId);
+ // Ô¤¼ÓÔØÒôЧ
+ static void preloadMusic(tstring pszFilePath);
+ // ÔÝÍ£ÒôЧ
+ static void pauseMusic(unsigned int nSoundId);
+ // ¼ÌÐø²¥·ÅÒôЧ
+ static void resumeMusic(unsigned int nSoundId);
+ // Ð¶ÔØÒôЧ
+ static void unloadMusic(LPCTSTR pszFilePath);
+ // ÉèÖÃÌØ¶¨ÒôÀÖµÄÒôÁ¿£¬0 ~ 1.0f
+ static void setVolume(tstring pszFilePath, float volume);
+
+ // ÔÝÍ£ËùÓÐÒôÀÖ
+ static void pauseAllMusics();
+ // ¼ÌÐø²¥·ÅËùÓÐÒôÀÖ
+ static void resumeAllMusics();
+ // Í£Ö¹ËùÓÐÒôÀÖ
+ static void stopAllMusics();
+ // Í£Ö¹ËùÓÐÒôÀÖ£¬²¢ÊÍ·ÅÄÚ´æ
+ static void end();
+ // ÉèÖÃ×ÜÒôÁ¿£¬0 ~ 1.0f
+ static void setVolume(float volume);
+};
+
+class Timer
+{
+ friend class App;
+
+public:
+ Timer(tstring name, UINT ms, const TIMER_CALLBACK & callback);
+ ~Timer();
+
+ // Æô¶¯¶¨Ê±Æ÷
+ void start();
+ // Í£Ö¹¶¨Ê±Æ÷
+ void stop();
+ // ¶¨Ê±Æ÷ÊÇ·ñÕýÔÚÔËÐÐ
+ bool isRunning();
+ // ÉèÖüä¸ôʱ¼ä
+ void setInterval(UINT ms);
+ // ÉèÖûص÷º¯Êý
+ void setCallback(const TIMER_CALLBACK& callback);
+ // ÉèÖö¨Ê±Æ÷Ãû³Æ
+ void setName(tstring name);
+ // »ñÈ¡¶¨Ê±Æ÷¼ä¸ôʱ¼ä
+ UINT getInterval() const;
+ // »ñÈ¡¶¨Ê±Æ÷Ãû³Æ
+ tstring getName() const;
+
+ // Ìí¼Ó¶¨Ê±Æ÷
+ static void addTimer(Timer * timer);
+ // Ìí¼Ó¶¨Ê±Æ÷
+ static void addTimer(tstring name, UINT ms, const TIMER_CALLBACK & callback);
+ // ¸ù¾ÝÃû³Æ»ñÈ¡¶¨Ê±Æ÷
+ static Timer * getTimer(tstring name);
+ // Æô¶¯Ìض¨¶¨Ê±Æ÷
+ static bool startTimer(tstring name);
+ // Í£Ö¹ÌØ¶¨¶¨Ê±Æ÷
+ static bool stopTimer(tstring name);
+ // ɾ³ýÌØ¶¨¶¨Ê±Æ÷
+ static bool delTimer(tstring name);
+ // ɾ³ýËùÓж¨Ê±Æ÷
+ static void clearAllTimers();
+
+protected:
+ bool m_bRunning;
+ tstring m_sName;
+ TIMER_CALLBACK m_callback;
+ LARGE_INTEGER m_nLast;
+ LARGE_INTEGER m_nAnimationInterval;
+ UINT m_nMilliSeconds;
+
+private:
+ static void __exec();
+};
+
+class ActionManager
+{
+ friend class App;
+ friend class Sprite;
+public:
+ // ¼ÌÐøÒ»¸öÌØ¶¨µÄ¶¯×÷
+ static void startAction(Action * action);
+ // ¼ÌÐøÒ»¸öÌØ¶¨µÄ¶¯×÷
+ static void resumeAction(Action * action);
+ // ÔÝÍ£Ò»¸öÌØ¶¨µÄ¶¯×÷
+ static void pauseAction(Action * action);
+ // Í£Ö¹Ò»¸öÌØ¶¨µÄ¶¯×÷
+ static void stopAction(Action * action);
+
+ // ¼ÌÐøÒ»¸ö Sprite µÄËùÓж¯×÷
+ static void startSpriteAllActions(Sprite * sprite);
+ // ¼ÌÐøÒ»¸ö Sprite µÄËùÓж¯×÷
+ static void resumeSpriteAllActions(Sprite * sprite);
+ // ÔÝÍ£Ò»¸ö Sprite µÄËùÓж¯×÷
+ static void pauseSpriteAllActions(Sprite * sprite);
+ // Í£Ö¹Ò»¸ö Sprite µÄËùÓж¯×÷
+ static void stopSpriteAllActions(Sprite * sprite);
+
+ // ¼ÌÐøµ±Ç°´æÔÚµÄËùÓж¯×÷
+ static void startAllActions();
+ // ¼ÌÐøµ±Ç°´æÔÚµÄËùÓж¯×÷
+ static void resumeAllActions();
+ // ÔÝÍ£µ±Ç°´æÔÚµÄËùÓж¯×÷
+ static void pauseAllActions();
+ // Í£Ö¹µ±Ç°´æÔÚµÄËùÓж¯×÷
+ static void stopAllActions();
+
+private:
+ static void __exec();
+ // ½«Ò»¸ö¶¯×÷Ìí¼Ó½ø¶¯×÷¹ÜÀíÆ÷
+ static void addAction(Action * action);
+};
+
+} // End of easy2d namespace
+
using namespace easy2d;
\ No newline at end of file