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