mirror of https://github.com/axmolengine/axmol.git
added jsb support for AssetsMAnager
This commit is contained in:
parent
0883723c71
commit
1c91e73a8c
|
@ -88,6 +88,10 @@ AssetsManager::AssetsManager(const char* packageUrl/* =NULL */, const char* vers
|
||||||
|
|
||||||
AssetsManager::~AssetsManager()
|
AssetsManager::~AssetsManager()
|
||||||
{
|
{
|
||||||
|
if (_delegate)
|
||||||
|
{
|
||||||
|
_delegate->release();
|
||||||
|
}
|
||||||
if (_schedule)
|
if (_schedule)
|
||||||
{
|
{
|
||||||
_schedule->release();
|
_schedule->release();
|
||||||
|
@ -479,7 +483,17 @@ void AssetsManager::deleteVersion()
|
||||||
|
|
||||||
void AssetsManager::setDelegate(AssetsManagerDelegateProtocol *delegate)
|
void AssetsManager::setDelegate(AssetsManagerDelegateProtocol *delegate)
|
||||||
{
|
{
|
||||||
|
if (_delegate)
|
||||||
|
{
|
||||||
|
_delegate->release();
|
||||||
|
}
|
||||||
|
|
||||||
_delegate = delegate;
|
_delegate = delegate;
|
||||||
|
|
||||||
|
if (_delegate)
|
||||||
|
{
|
||||||
|
_delegate->retain();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetsManager::setConnectionTimeout(unsigned int timeout)
|
void AssetsManager::setConnectionTimeout(unsigned int timeout)
|
||||||
|
@ -604,4 +618,30 @@ void AssetsManager::Helper::handleUpdateSucceed(Message *msg)
|
||||||
if (manager) manager->_delegate->onSuccess();
|
if (manager) manager->_delegate->onSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AssetsManager* AssetsManager::create(const char* packageUrl, const char* versionFileUrl, const char* storagePath, ErrorCallback errorCallback, ProgressCallback progressCallback, SuccessCallback successCallback )
|
||||||
|
{
|
||||||
|
class DelegateProtocolImpl : public AssetsManagerDelegateProtocol
|
||||||
|
{
|
||||||
|
public :
|
||||||
|
DelegateProtocolImpl(ErrorCallback errorCallback, ProgressCallback progressCallback, SuccessCallback successCallback)
|
||||||
|
: errorCallback(errorCallback), progressCallback(progressCallback), successCallback(successCallback)
|
||||||
|
{}
|
||||||
|
|
||||||
|
virtual void onError(AssetsManager::ErrorCode errorCode) { errorCallback(int(errorCode)); }
|
||||||
|
virtual void onProgress(int percent) { progressCallback(percent); }
|
||||||
|
virtual void onSuccess() { successCallback(); }
|
||||||
|
|
||||||
|
private :
|
||||||
|
ErrorCallback errorCallback;
|
||||||
|
ProgressCallback progressCallback;
|
||||||
|
SuccessCallback successCallback;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto* manager = new AssetsManager(packageUrl,versionFileUrl,storagePath);
|
||||||
|
auto* delegate = new DelegateProtocolImpl(errorCallback,progressCallback,successCallback);
|
||||||
|
delegate->autorelease();
|
||||||
|
manager->setDelegate(delegate);
|
||||||
|
return manager;
|
||||||
|
}
|
||||||
|
|
||||||
NS_CC_EXT_END;
|
NS_CC_EXT_END;
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#define __AssetsManager__
|
#define __AssetsManager__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <curl/curl.h>
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
||||||
#include "cocos2d.h"
|
#include "cocos2d.h"
|
||||||
|
@ -41,7 +41,7 @@ class AssetsManagerDelegateProtocol;
|
||||||
* The updated package should be a zip file. And there should be a file named
|
* The updated package should be a zip file. And there should be a file named
|
||||||
* version in the server, which contains version code.
|
* version in the server, which contains version code.
|
||||||
*/
|
*/
|
||||||
class AssetsManager
|
class AssetsManager : public Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum class ErrorCode
|
enum class ErrorCode
|
||||||
|
@ -77,6 +77,14 @@ public:
|
||||||
|
|
||||||
virtual ~AssetsManager();
|
virtual ~AssetsManager();
|
||||||
|
|
||||||
|
typedef std::function<void(int)> ErrorCallback;
|
||||||
|
typedef std::function<void(int)> ProgressCallback;
|
||||||
|
typedef std::function<void(void)> SuccessCallback;
|
||||||
|
|
||||||
|
/* @brief To access within scripting environment
|
||||||
|
*/
|
||||||
|
static AssetsManager* create(const char* packageUrl, const char* versionFileUrl, const char* storagePath, ErrorCallback errorCallback, ProgressCallback progressCallback, SuccessCallback successCallback );
|
||||||
|
|
||||||
/* @brief Check out if there is a new version resource.
|
/* @brief Check out if there is a new version resource.
|
||||||
* You may use this method before updating, then let user determine whether
|
* You may use this method before updating, then let user determine whether
|
||||||
* he wants to update resources.
|
* he wants to update resources.
|
||||||
|
@ -172,6 +180,7 @@ private:
|
||||||
std::list<Message*> *_messageQueue;
|
std::list<Message*> *_messageQueue;
|
||||||
std::mutex _messageQueueMutex;
|
std::mutex _messageQueueMutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! The path to store downloaded resources.
|
//! The path to store downloaded resources.
|
||||||
|
@ -185,16 +194,17 @@ private:
|
||||||
|
|
||||||
std::string _downloadedVersion;
|
std::string _downloadedVersion;
|
||||||
|
|
||||||
CURL *_curl;
|
void *_curl;
|
||||||
|
|
||||||
Helper *_schedule;
|
Helper *_schedule;
|
||||||
unsigned int _connectionTimeout;
|
unsigned int _connectionTimeout;
|
||||||
|
|
||||||
AssetsManagerDelegateProtocol *_delegate; // weak reference
|
AssetsManagerDelegateProtocol *_delegate;
|
||||||
|
|
||||||
bool _isDownloading;
|
bool _isDownloading;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AssetsManagerDelegateProtocol
|
class AssetsManagerDelegateProtocol : public Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/* @brief Call back function for error
|
/* @brief Call back function for error
|
||||||
|
|
|
@ -56,4 +56,6 @@
|
||||||
|
|
||||||
#include "CCDeprecated-ext.h"
|
#include "CCDeprecated-ext.h"
|
||||||
|
|
||||||
|
#include "AssetsManager/AssetsManager.h"
|
||||||
|
|
||||||
#endif /* __COCOS2D_EXT_H__ */
|
#endif /* __COCOS2D_EXT_H__ */
|
||||||
|
|
|
@ -13,7 +13,7 @@ android_flags = -D_SIZE_T_DEFINED_
|
||||||
clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include
|
clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include
|
||||||
clang_flags = -nostdinc -x c++ -std=c++11
|
clang_flags = -nostdinc -x c++ -std=c++11
|
||||||
|
|
||||||
cocos_headers = -I%(cocosdir)s/cocos2dx/include -I%(cocosdir)s/cocos2dx/platform -I%(cocosdir)s/cocos2dx/platform/android -I%(cocosdir)s/cocos2dx -I%(cocosdir)s/cocos2dx/kazmath/include -I%(cocosdir)s/extensions
|
cocos_headers = -I%(cocosdir)s/cocos2dx/include -I%(cocosdir)s/cocos2dx/platform -I%(cocosdir)s/cocos2dx/platform/android -I%(cocosdir)s/cocos2dx -I%(cocosdir)s/cocos2dx/kazmath/include -I%(cocosdir)s/extensions
|
||||||
cocos_flags = -DANDROID -DCOCOS2D_JAVASCRIPT
|
cocos_flags = -DANDROID -DCOCOS2D_JAVASCRIPT
|
||||||
|
|
||||||
cxxgenerator_headers = -I%(cxxgeneratordir)s/targets/spidermonkey/common
|
cxxgenerator_headers = -I%(cxxgeneratordir)s/targets/spidermonkey/common
|
||||||
|
@ -26,7 +26,7 @@ headers = %(cocosdir)s/extensions/cocos-ext.h
|
||||||
|
|
||||||
# what classes to produce code for. You can use regular expressions here. When testing the regular
|
# what classes to produce code for. You can use regular expressions here. When testing the regular
|
||||||
# expression, it will be enclosed in "^$", like this: "^Menu*$".
|
# expression, it will be enclosed in "^$", like this: "^Menu*$".
|
||||||
classes = CCBReader.* CCBAnimationManager.* Scale9Sprite Control$ ControlButton.* ScrollView$ TableView$ TableViewCell$ EditBox$
|
classes = AssetsManager.* CCBReader.* CCBAnimationManager.* Scale9Sprite Control$ ControlButton.* ScrollView$ TableView$ TableViewCell$ EditBox$
|
||||||
|
|
||||||
# what should we skip? in the format ClassName::[function function]
|
# what should we skip? in the format ClassName::[function function]
|
||||||
# ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also
|
# ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also
|
||||||
|
@ -43,6 +43,7 @@ skip = CCBReader::[^CCBReader$ addOwnerCallbackName isJSControlled readByte getC
|
||||||
*::[^visit$ copyWith.* onEnter.* onExit.* ^description$ getObjectType],
|
*::[^visit$ copyWith.* onEnter.* onExit.* ^description$ getObjectType],
|
||||||
EditBox::[(g|s)etDelegate ^keyboard.* touchDownAction getScriptEditBoxHandler registerScriptEditBoxHandler unregisterScriptEditBoxHandler],
|
EditBox::[(g|s)etDelegate ^keyboard.* touchDownAction getScriptEditBoxHandler registerScriptEditBoxHandler unregisterScriptEditBoxHandler],
|
||||||
TableView::[create (g|s)etDataSource$ (g|s)etDelegate],
|
TableView::[create (g|s)etDataSource$ (g|s)etDelegate],
|
||||||
|
AssetsManager::[setDelegate],
|
||||||
Control::[removeHandleOfControlEvent addHandleOfControlEvent]
|
Control::[removeHandleOfControlEvent addHandleOfControlEvent]
|
||||||
|
|
||||||
rename_functions = CCBReader::[getAnimationManager=getActionManager setAnimationManager=setActionManager],
|
rename_functions = CCBReader::[getAnimationManager=getActionManager setAnimationManager=setActionManager],
|
||||||
|
|
Loading…
Reference in New Issue