merge cocos

This commit is contained in:
yangxiao 2015-06-05 14:25:37 +08:00
commit d50c1823d4
47 changed files with 556 additions and 311 deletions

View File

@ -74,8 +74,7 @@ void Component::onEnter()
#if CC_ENABLE_SCRIPT_BINDING
if (_scriptType == kScriptTypeJavascript)
{
if (sendComponentEventToJS(this, kComponentOnEnter))
return;
sendComponentEventToJS(this, kComponentOnEnter);
}
#endif
}
@ -85,8 +84,27 @@ void Component::onExit()
#if CC_ENABLE_SCRIPT_BINDING
if (_scriptType == kScriptTypeJavascript)
{
if (sendComponentEventToJS(this, kComponentOnExit))
return;
sendComponentEventToJS(this, kComponentOnExit);
}
#endif
}
void Component::onAdd()
{
#if CC_ENABLE_SCRIPT_BINDING
if (_scriptType == kScriptTypeJavascript)
{
sendComponentEventToJS(this, kComponentOnAdd);
}
#endif
}
void Component::onRemove()
{
#if CC_ENABLE_SCRIPT_BINDING
if (_scriptType == kScriptTypeJavascript)
{
sendComponentEventToJS(this, kComponentOnRemove);
}
#endif
}
@ -96,8 +114,7 @@ void Component::update(float delta)
#if CC_ENABLE_SCRIPT_BINDING
if (_scriptType == kScriptTypeJavascript)
{
if (sendComponentEventToJS(this, kComponentOnUpdate))
return;
sendComponentEventToJS(this, kComponentOnUpdate);
}
#endif
}

View File

@ -38,6 +38,8 @@ class Node;
enum {
kComponentOnEnter,
kComponentOnExit,
kComponentOnAdd,
kComponentOnRemove,
kComponentOnUpdate
};
@ -58,6 +60,8 @@ public:
virtual void onEnter();
virtual void onExit();
virtual void onAdd();
virtual void onRemove();
virtual void update(float delta);
virtual bool serialize(void* r);
virtual bool isEnabled() const;

View File

@ -68,7 +68,7 @@ bool ComponentContainer::add(Component *com)
CC_BREAK_IF(component);
com->setOwner(_owner);
_components->insert(com->getName(), com);
com->onEnter();
com->onAdd();
ret = true;
} while(0);
return ret;
@ -85,7 +85,7 @@ bool ComponentContainer::remove(const std::string& name)
CC_BREAK_IF(iter == _components->end());
auto com = iter->second;
com->onExit();
com->onRemove();
com->setOwner(nullptr);
_components->erase(iter);
@ -105,7 +105,7 @@ bool ComponentContainer::remove(Component *com)
{
if (iter->second == com)
{
com->onExit();
com->onRemove();
com->setOwner(nullptr);
_components->erase(iter);
break;
@ -122,7 +122,7 @@ void ComponentContainer::removeAll()
{
for (auto iter = _components->begin(); iter != _components->end(); ++iter)
{
iter->second->onExit();
iter->second->onRemove();
iter->second->setOwner(nullptr);
}

View File

@ -1419,6 +1419,11 @@ void Node::onEnter()
if (_onEnterCallback)
_onEnterCallback();
if (_componentContainer && !_componentContainer->isEmpty())
{
_componentContainer->onEnter();
}
#if CC_ENABLE_SCRIPT_BINDING
if (_scriptType == kScriptTypeJavascript)
{
@ -1498,6 +1503,11 @@ void Node::onExit()
if (_onExitCallback)
_onExitCallback();
if (_componentContainer && !_componentContainer->isEmpty())
{
_componentContainer->onExit();
}
#if CC_ENABLE_SCRIPT_BINDING
if (_scriptType == kScriptTypeJavascript)
{

View File

@ -248,54 +248,19 @@ void Scene::setNavMeshDebugCamera(Camera *camera)
_navMeshDebugCamera = camera;
}
void Scene::addChildToNavMesh(Node* child)
{
if (_navMesh)
{
std::function<void(Node*)> addToNavMeshFunc = nullptr;
addToNavMeshFunc = [this, &addToNavMeshFunc](Node* node) -> void
{
auto agCom = static_cast<NavMeshAgent*>(node->getComponent(NavMeshAgent::getNavMeshAgentComponentName()));
if (agCom)
{
agCom->onEnter();
}
auto obCom = static_cast<NavMeshObstacle*>(node->getComponent(NavMeshObstacle::getNavMeshObstacleComponentName()));
if (obCom)
{
obCom->onEnter();
}
auto& children = node->getChildren();
for (const auto &n : children) {
addToNavMeshFunc(n);
}
};
addToNavMeshFunc(child);
}
}
#endif
#if (CC_USE_PHYSICS || (CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION) || CC_USE_NAVMESH)
#if (CC_USE_PHYSICS || (CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION))
void Scene::addChild(Node* child, int zOrder, int tag)
{
Node::addChild(child, zOrder, tag);
addChildToPhysicsWorld(child);
#if CC_USE_NAVMESH
addChildToNavMesh(child);
#endif
}
void Scene::addChild(Node* child, int zOrder, const std::string &name)
{
Node::addChild(child, zOrder, name);
addChildToPhysicsWorld(child);
#if CC_USE_NAVMESH
addChildToNavMesh(child);
#endif
}
Scene* Scene::createWithPhysics()

View File

@ -143,7 +143,7 @@ protected:
private:
CC_DISALLOW_COPY_AND_ASSIGN(Scene);
#if (CC_USE_PHYSICS || (CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION) || CC_USE_NAVMESH)
#if (CC_USE_PHYSICS || (CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION))
public:
virtual void addChild(Node* child, int zOrder, int tag) override;
virtual void addChild(Node* child, int zOrder, const std::string &name) override;
@ -202,9 +202,6 @@ public:
*/
void setNavMeshDebugCamera(Camera *camera);
protected:
void addChildToNavMesh(Node* child);
protected:
NavMesh* _navMesh;
Camera * _navMeshDebugCamera;

View File

@ -24,6 +24,7 @@
****************************************************************************/
#include "base/CCData.h"
#include "base/CCConsole.h"
NS_CC_BEGIN

View File

@ -23,6 +23,7 @@
****************************************************************************/
#include "base/CCEventListener.h"
#include "base/CCConsole.h"
NS_CC_BEGIN

View File

@ -24,6 +24,7 @@
#include "base/CCEventListenerAcceleration.h"
#include "base/CCEventAcceleration.h"
#include "base/CCConsole.h"
NS_CC_BEGIN

View File

@ -56,6 +56,16 @@ void ComAudio::onExit()
stopAllEffects();
}
void ComAudio::onAdd()
{
}
void ComAudio::onRemove()
{
stopBackgroundMusic(true);
stopAllEffects();
}
bool ComAudio::isEnabled() const
{
return _enabled;

View File

@ -59,6 +59,16 @@ public:
* @lua NA
*/
virtual void onExit() override;
/**
* @js NA
* @lua NA
*/
virtual void onAdd() override;
/**
* @js NA
* @lua NA
*/
virtual void onRemove() override;
virtual bool isEnabled() const override;
virtual void setEnabled(bool b) override;
virtual bool serialize(void* r) override;

View File

@ -54,6 +54,18 @@ void ComController::onExit()
{
}
void ComController::onAdd()
{
if (_owner != nullptr)
{
_owner->scheduleUpdate();
}
}
void ComController::onRemove()
{
}
void ComController::update(float delta)
{
}

View File

@ -59,6 +59,16 @@ public:
* @lua NA
*/
virtual void onExit() override;
/**
* @js NA
* @lua NA
*/
virtual void onAdd() override;
/**
* @js NA
* @lua NA
*/
virtual void onRemove() override;
virtual void update(float delta) override;
virtual bool isEnabled() const override;
virtual void setEnabled(bool b) override;

View File

@ -68,6 +68,22 @@ void ComRender::onExit()
}
}
void ComRender::onAdd()
{
if (_owner != nullptr)
{
_owner->addChild(_render);
}
}
void ComRender::onRemove()
{
if (_owner != nullptr)
{
_owner->removeChild(_render, true);
}
}
cocos2d::Node* ComRender::getNode()
{
return _render;

View File

@ -57,6 +57,16 @@ public:
* @lua NA
*/
virtual void onExit() override;
/**
* @js NA
* @lua NA
*/
virtual void onAdd() override;
/**
* @js NA
* @lua NA
*/
virtual void onRemove() override;
virtual bool serialize(void* r) override;
virtual cocos2d::Node* getNode();
virtual void setNode(cocos2d::Node *node);

View File

@ -202,6 +202,8 @@ static bool configureCURL(HttpClient* client, CURL* handle, char* errorBuffer)
// Document is here: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOSIGNAL
curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(handle, CURLOPT_ACCEPT_ENCODING, "");
return true;
}

View File

@ -28,6 +28,8 @@ import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.InflaterInputStream;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
@ -260,11 +262,20 @@ public class Cocos2dxHttpURLConnection
}
static byte[] getResponseContent(HttpURLConnection http) {
DataInputStream in;
try {
in = new DataInputStream(http.getInputStream());
InputStream in;
try {
in = http.getInputStream();
String contentEncoding = http.getContentEncoding();
if (contentEncoding != null) {
if(contentEncoding.equalsIgnoreCase("gzip")){
in = new GZIPInputStream(http.getInputStream()); //reads 2 bytes to determine GZIP stream!
}
else if(contentEncoding.equalsIgnoreCase("deflate")){
in = new InflaterInputStream(http.getInputStream());
}
}
} catch (IOException e) {
in = new DataInputStream(http.getErrorStream());
in = http.getErrorStream();
} catch (Exception e) {
Log.e("Cocos2dxHttpURLConnection exception", e.toString());
return null;

View File

@ -22213,16 +22213,6 @@ isEnabled : function (
return false;
},
/**
* @method update
* @param {float} arg0
*/
update : function (
float
)
{
},
/**
* @method getOwner
* @return {cc.Node}
@ -22243,16 +22233,6 @@ init : function (
return false;
},
/**
* @method setOwner
* @param {cc.Node} arg0
*/
setOwner : function (
node
)
{
},
/**
* @method getName
* @return {String}
@ -22263,6 +22243,16 @@ getName : function (
return ;
},
/**
* @method setOwner
* @param {cc.Node} arg0
*/
setOwner : function (
node
)
{
},
/**
* @method create
* @return {cc.Component}

View File

@ -67823,26 +67823,6 @@ bool js_cocos2dx_Component_isEnabled(JSContext *cx, uint32_t argc, jsval *vp)
JS_ReportError(cx, "js_cocos2dx_Component_isEnabled : wrong number of arguments: %d, was expecting %d", argc, 0);
return false;
}
bool js_cocos2dx_Component_update(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
bool ok = true;
JS::RootedObject obj(cx, args.thisv().toObjectOrNull());
js_proxy_t *proxy = jsb_get_js_proxy(obj);
cocos2d::Component* cobj = (cocos2d::Component *)(proxy ? proxy->ptr : NULL);
JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_Component_update : Invalid Native Object");
if (argc == 1) {
double arg0;
ok &= JS::ToNumber( cx, args.get(0), &arg0) && !isnan(arg0);
JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_Component_update : Error processing arguments");
cobj->update(arg0);
args.rval().setUndefined();
return true;
}
JS_ReportError(cx, "js_cocos2dx_Component_update : wrong number of arguments: %d, was expecting %d", argc, 1);
return false;
}
bool js_cocos2dx_Component_getOwner(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
@ -67886,6 +67866,24 @@ bool js_cocos2dx_Component_init(JSContext *cx, uint32_t argc, jsval *vp)
JS_ReportError(cx, "js_cocos2dx_Component_init : wrong number of arguments: %d, was expecting %d", argc, 0);
return false;
}
bool js_cocos2dx_Component_getName(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
JS::RootedObject obj(cx, args.thisv().toObjectOrNull());
js_proxy_t *proxy = jsb_get_js_proxy(obj);
cocos2d::Component* cobj = (cocos2d::Component *)(proxy ? proxy->ptr : NULL);
JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_Component_getName : Invalid Native Object");
if (argc == 0) {
const std::string& ret = cobj->getName();
jsval jsret = JSVAL_NULL;
jsret = std_string_to_jsval(cx, ret);
args.rval().set(jsret);
return true;
}
JS_ReportError(cx, "js_cocos2dx_Component_getName : wrong number of arguments: %d, was expecting %d", argc, 0);
return false;
}
bool js_cocos2dx_Component_setOwner(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
@ -67914,24 +67912,6 @@ bool js_cocos2dx_Component_setOwner(JSContext *cx, uint32_t argc, jsval *vp)
JS_ReportError(cx, "js_cocos2dx_Component_setOwner : wrong number of arguments: %d, was expecting %d", argc, 1);
return false;
}
bool js_cocos2dx_Component_getName(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
JS::RootedObject obj(cx, args.thisv().toObjectOrNull());
js_proxy_t *proxy = jsb_get_js_proxy(obj);
cocos2d::Component* cobj = (cocos2d::Component *)(proxy ? proxy->ptr : NULL);
JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_Component_getName : Invalid Native Object");
if (argc == 0) {
const std::string& ret = cobj->getName();
jsval jsret = JSVAL_NULL;
jsret = std_string_to_jsval(cx, ret);
args.rval().set(jsret);
return true;
}
JS_ReportError(cx, "js_cocos2dx_Component_getName : wrong number of arguments: %d, was expecting %d", argc, 0);
return false;
}
bool js_cocos2dx_Component_create(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
@ -68026,11 +68006,10 @@ void js_register_cocos2dx_Component(JSContext *cx, JS::HandleObject global) {
JS_FN("setEnabled", js_cocos2dx_Component_setEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("setName", js_cocos2dx_Component_setName, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("isEnabled", js_cocos2dx_Component_isEnabled, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("update", js_cocos2dx_Component_update, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("getOwner", js_cocos2dx_Component_getOwner, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("init", js_cocos2dx_Component_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("setOwner", js_cocos2dx_Component_setOwner, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("getName", js_cocos2dx_Component_getName, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("setOwner", js_cocos2dx_Component_setOwner, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FN("ctor", js_cocos2d_Component_ctor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_FS_END
};

View File

@ -3922,11 +3922,10 @@ void register_all_cocos2dx(JSContext* cx, JS::HandleObject obj);
bool js_cocos2dx_Component_setEnabled(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_setName(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_isEnabled(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_update(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_getOwner(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_init(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_setOwner(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_getName(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_setOwner(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_create(JSContext *cx, uint32_t argc, jsval *vp);
bool js_cocos2dx_Component_Component(JSContext *cx, uint32_t argc, jsval *vp);

View File

@ -1058,28 +1058,29 @@ int ScriptingCore::handleComponentEvent(void* data)
JS::RootedValue retval(_cx);
jsval dataVal = INT_TO_JSVAL(1);
if (action == kComponentOnEnter)
JS::RootedValue nodeValue(_cx, OBJECT_TO_JSVAL(p->obj.get()));
if (action == kComponentOnAdd)
{
if (isFunctionOverridedInJS(JS::RootedObject(_cx, p->obj.get()), "onEnter", js_cocos2dx_Component_onEnter))
{
ret = executeFunctionWithOwner(OBJECT_TO_JSVAL(p->obj), "onEnter", 1, &dataVal, &retval);
}
ret = executeFunctionWithOwner(nodeValue, "onAdd", 1, &dataVal, &retval);
}
else if (action == kComponentOnRemove)
{
ret = executeFunctionWithOwner(nodeValue, "onRemove", 1, &dataVal, &retval);
}
else if (action == kComponentOnEnter)
{
ret = executeFunctionWithOwner(nodeValue, "onEnter", 1, &dataVal, &retval);
resumeSchedulesAndActions(p);
}
else if (action == kComponentOnExit)
{
if (isFunctionOverridedInJS(JS::RootedObject(_cx, p->obj.get()), "onExit", js_cocos2dx_Component_onExit))
{
ret = executeFunctionWithOwner(OBJECT_TO_JSVAL(p->obj), "onExit", 1, &dataVal, &retval);
}
ret = executeFunctionWithOwner(nodeValue, "onExit", 1, &dataVal, &retval);
pauseSchedulesAndActions(p);
}
else if (action == kComponentOnUpdate)
{
if (isFunctionOverridedInJS(JS::RootedObject(_cx, p->obj.get()), "update", js_cocos2dx_Component_update))
{
ret = executeFunctionWithOwner(OBJECT_TO_JSVAL(p->obj), "update", 1, &dataVal, &retval);
}
ret = executeFunctionWithOwner(nodeValue, "update", 1, &dataVal, &retval);
}
return ret;

View File

@ -2693,36 +2693,6 @@ bool js_cocos2dx_CCNode_convertToWorldSpaceAR(JSContext *cx, uint32_t argc, jsva
return true;
}
bool js_cocos2dx_Component_onEnter(JSContext *cx, uint32_t argc, jsval *vp)
{
JSObject *thisObj = JS_THIS_OBJECT(cx, vp);
if (thisObj) {
js_proxy_t *proxy = jsb_get_js_proxy(thisObj);
if (proxy) {
ScriptingCore::getInstance()->setCalledFromScript(true);
static_cast<Component*>(proxy->ptr)->onEnter();
return true;
}
}
JS_ReportError(cx, "Invalid Native Object.");
return false;
}
bool js_cocos2dx_Component_onExit(JSContext *cx, uint32_t argc, jsval *vp)
{
JSObject *thisObj = JS_THIS_OBJECT(cx, vp);
if (thisObj) {
js_proxy_t *proxy = jsb_get_js_proxy(thisObj);
if (proxy) {
ScriptingCore::getInstance()->setCalledFromScript(true);
static_cast<Component*>(proxy->ptr)->onExit();
return true;
}
}
JS_ReportError(cx, "Invalid Native Object.");
return false;
}
bool js_cocos2dx_CCTMXLayer_tileFlagsAt(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
@ -5490,10 +5460,6 @@ void register_cocos2dx_js_core(JSContext* cx, JS::HandleObject global)
tmpObj.set(jsb_cocos2d_GLProgramState_prototype);
JS_DefineFunction(cx, tmpObj, "setVertexAttribPointer", js_cocos2dx_GLProgramState_setVertexAttribPointer, 6, JSPROP_ENUMERATE | JSPROP_PERMANENT);
JS_DefineFunction(cx, tmpObj, "setUniformVec4", js_cocos2dx_GLProgramState_setUniformVec4, 2, JSPROP_ENUMERATE | JSPROP_PERMANENT);
tmpObj.set(jsb_cocos2d_Component_prototype);
JS_DefineFunction(cx, tmpObj, "onEnter", js_cocos2dx_Component_onEnter, 0, JSPROP_ENUMERATE | JSPROP_PERMANENT);
JS_DefineFunction(cx, tmpObj, "onExit", js_cocos2dx_Component_onExit, 0, JSPROP_ENUMERATE | JSPROP_PERMANENT);
tmpObj.set(jsb_cocos2d_Scheduler_prototype);
JS_DefineFunction(cx, tmpObj, "retain", js_cocos2dx_retain, 0, JSPROP_ENUMERATE | JSPROP_PERMANENT);

View File

@ -908,7 +908,7 @@ bool js_cocos2dx_ext_release(JSContext *cx, uint32_t argc, jsval *vp)
}
__JSDownloaderDelegator::__JSDownloaderDelegator(JSContext *cx, JS::HandleObject obj, const std::string &url, JS::HandleValue callback)
__JSDownloaderDelegator::__JSDownloaderDelegator(JSContext *cx, JS::HandleObject obj, const std::string &url, JS::HandleObject callback)
: _cx(cx)
, _url(url)
, _buffer(nullptr)
@ -917,7 +917,27 @@ __JSDownloaderDelegator::__JSDownloaderDelegator(JSContext *cx, JS::HandleObject
_obj.ref().set(obj);
_jsCallback.construct(_cx);
_jsCallback.ref().set(callback);
}
__JSDownloaderDelegator::~__JSDownloaderDelegator()
{
_obj.destroyIfConstructed();
_jsCallback.destroyIfConstructed();
if (_buffer != nullptr)
free(_buffer);
_downloader->setErrorCallback(nullptr);
_downloader->setSuccessCallback(nullptr);
}
__JSDownloaderDelegator *__JSDownloaderDelegator::create(JSContext *cx, JS::HandleObject obj, const std::string &url, JS::HandleObject callback)
{
__JSDownloaderDelegator *delegate = new (std::nothrow) __JSDownloaderDelegator(cx, obj, url, callback);
delegate->autorelease();
return delegate;
}
void __JSDownloaderDelegator::startDownload()
{
if (Director::getInstance()->getTextureCache()->getTextureForKey(_url))
{
onSuccess(nullptr, nullptr, nullptr);
@ -929,12 +949,9 @@ __JSDownloaderDelegator::__JSDownloaderDelegator(JSContext *cx, JS::HandleObject
_downloader->setErrorCallback( std::bind(&__JSDownloaderDelegator::onError, this, std::placeholders::_1) );
_downloader->setSuccessCallback( std::bind(&__JSDownloaderDelegator::onSuccess, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) );
long contentSize = _downloader->getContentSize(_url);
if (contentSize == -1) {
cocos2d::extension::Downloader::Error err;
onError(err);
}
else {
cocos2d::extension::Downloader::HeaderInfo info = _downloader->getHeader(_url);
long contentSize = info.contentSize;
if (contentSize > 0 && info.responseCode < 400) {
_size = contentSize / sizeof(unsigned char);
_buffer = (unsigned char*)malloc(contentSize);
_downloader->downloadToBufferSync(_url, _buffer, _size);
@ -942,79 +959,85 @@ __JSDownloaderDelegator::__JSDownloaderDelegator(JSContext *cx, JS::HandleObject
}
}
__JSDownloaderDelegator::~__JSDownloaderDelegator()
void __JSDownloaderDelegator::download()
{
if (_buffer != nullptr)
free(_buffer);
_downloader->setErrorCallback(nullptr);
_downloader->setSuccessCallback(nullptr);
retain();
startDownload();
}
void __JSDownloaderDelegator::downloadAsync()
{
retain();
auto t = std::thread(&__JSDownloaderDelegator::startDownload, this);
t.detach();
}
void __JSDownloaderDelegator::onError(const cocos2d::extension::Downloader::Error &error)
{
if (!_jsCallback.ref().isNull()) {
JSContext *cx = ScriptingCore::getInstance()->getGlobalContext();
JS::RootedObject global(cx, ScriptingCore::getInstance()->getGlobalObject());
JSAutoCompartment ac(_cx, _obj.ref());
jsval succeed = BOOLEAN_TO_JSVAL(false);
JS::RootedValue retval(cx);
JS_CallFunctionValue(cx, global, _jsCallback.ref(), JS::HandleValueArray::fromMarkedLocation(1, &succeed), &retval);
}
this->release();
Director::getInstance()->getScheduler()->performFunctionInCocosThread([this]
{
JS::RootedValue callback(_cx, OBJECT_TO_JSVAL(_jsCallback.ref()));
if (!callback.isNull()) {
JS::RootedObject global(_cx, ScriptingCore::getInstance()->getGlobalObject());
JSAutoCompartment ac(_cx, global);
jsval succeed = BOOLEAN_TO_JSVAL(false);
JS::RootedValue retval(_cx);
JS_CallFunctionValue(_cx, global, callback, JS::HandleValueArray::fromMarkedLocation(1, &succeed), &retval);
}
release();
});
}
void __JSDownloaderDelegator::onSuccess(const std::string &srcUrl, const std::string &storagePath, const std::string &customId)
{
Image *image = new Image();
jsval valArr[2];
JSContext *cx = ScriptingCore::getInstance()->getGlobalContext();
JS::RootedObject global(cx, ScriptingCore::getInstance()->getGlobalObject());
cocos2d::TextureCache *cache = Director::getInstance()->getTextureCache();
JSAutoCompartment ac(_cx, _obj.ref() ? _obj.ref() : global);
Texture2D *tex = cache->getTextureForKey(_url);
if (tex)
if (!tex)
{
valArr[0] = BOOLEAN_TO_JSVAL(true);
js_proxy_t* p = jsb_get_native_proxy(tex);
valArr[1] = OBJECT_TO_JSVAL(p->obj);
if (image->initWithImageData(_buffer, _size))
{
tex = Director::getInstance()->getTextureCache()->addImage(image, _url);
}
}
else if (image->initWithImageData(_buffer, _size))
{
tex = Director::getInstance()->getTextureCache()->addImage(image, _url);
valArr[0] = BOOLEAN_TO_JSVAL(true);
JS::RootedObject texProto(cx, jsb_cocos2d_Texture2D_prototype);
JSObject *obj = JS_NewObject(cx, jsb_cocos2d_Texture2D_class, texProto, global);
// link the native object with the javascript object
js_proxy_t* p = jsb_new_proxy(tex, obj);
JS::AddNamedObjectRoot(cx, &p->obj, "cocos2d::Texture2D");
valArr[1] = OBJECT_TO_JSVAL(p->obj);
}
else
{
valArr[0] = BOOLEAN_TO_JSVAL(false);
valArr[1] = JSVAL_NULL;
}
image->release();
if (!_jsCallback.ref().isNull()) {
JS::RootedValue retval(cx);
JS_CallFunctionValue(cx, global, _jsCallback.ref(), JS::HandleValueArray::fromMarkedLocation(2, valArr), &retval);
}
this->release();
}
void __JSDownloaderDelegator::download(JSContext *cx, JS::HandleObject obj, const std::string &url, JS::HandleValue callback)
{
auto t = std::thread([cx, obj, url, callback]() {
new __JSDownloaderDelegator(cx, obj, url, callback);
Director::getInstance()->getScheduler()->performFunctionInCocosThread([this, tex]
{
JS::RootedObject global(_cx, ScriptingCore::getInstance()->getGlobalObject());
JSAutoCompartment ac(_cx, global);
jsval valArr[2];
if (tex)
{
valArr[0] = BOOLEAN_TO_JSVAL(true);
js_proxy_t* p = jsb_get_native_proxy(tex);
if (!p)
{
JS::RootedObject texProto(_cx, jsb_cocos2d_Texture2D_prototype);
JSObject *obj = JS_NewObject(_cx, jsb_cocos2d_Texture2D_class, texProto, global);
// link the native object with the javascript object
p = jsb_new_proxy(tex, obj);
JS::AddNamedObjectRoot(_cx, &p->obj, "cocos2d::Texture2D");
}
valArr[1] = OBJECT_TO_JSVAL(p->obj);
}
else
{
valArr[0] = BOOLEAN_TO_JSVAL(false);
valArr[1] = JSVAL_NULL;
}
JS::RootedValue callback(_cx, OBJECT_TO_JSVAL(_jsCallback.ref()));
if (!callback.isNull())
{
JS::RootedValue retval(_cx);
JS_CallFunctionValue(_cx, global, callback, JS::HandleValueArray::fromMarkedLocation(2, valArr), &retval);
}
release();
});
t.detach();
}
// jsb.loadRemoteImg(url, function(succeed, result) {})
@ -1022,14 +1045,15 @@ bool js_load_remote_image(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
JS::RootedObject obj(cx, JS_THIS_OBJECT(cx, vp));
if (argc == 2) {
if (argc == 2)
{
std::string url;
bool ok = jsval_to_std_string(cx, args.get(0), &url);
JS::RootedValue callback(cx, args.get(1));
JSB_PRECONDITION2(ok, cx, false, "js_load_remote_image : Error processing arguments");
JS::RootedObject callback(cx, args.get(1).toObjectOrNull());
__JSDownloaderDelegator::download(cx, obj, url, callback);
JSB_PRECONDITION2(ok, cx, false, "js_console_log : Error processing arguments");
__JSDownloaderDelegator *delegate = __JSDownloaderDelegator::create(cx, obj, url, callback);
delegate->downloadAsync();
args.rval().setUndefined();
return true;

View File

@ -32,12 +32,17 @@
class __JSDownloaderDelegator : cocos2d::Ref
{
public:
static void download(JSContext *cx, JS::HandleObject obj, const std::string &url, JS::HandleValue callback);
void downloadAsync();
void download();
static __JSDownloaderDelegator *create(JSContext *cx, JS::HandleObject obj, const std::string &url, JS::HandleObject callback);
protected:
__JSDownloaderDelegator(JSContext *cx, JS::HandleObject obj, const std::string &url, JS::HandleValue callback);
__JSDownloaderDelegator(JSContext *cx, JS::HandleObject obj, const std::string &url, JS::HandleObject callback);
~__JSDownloaderDelegator();
void startDownload();
private:
void onSuccess(const std::string &srcUrl, const std::string &storagePath, const std::string &customId);
void onError(const cocos2d::extension::Downloader::Error &error);
@ -46,8 +51,8 @@ private:
std::shared_ptr<cocos2d::extension::Downloader> _downloader;
std::string _url;
JSContext *_cx;
mozilla::Maybe<JS::RootedValue> _jsCallback;
mozilla::Maybe<JS::RootedObject> _obj;
mozilla::Maybe<JS::PersistentRootedObject> _jsCallback;
mozilla::Maybe<JS::PersistentRootedObject> _obj;
};
void register_all_cocos2dx_extension_manual(JSContext* cx, JS::HandleObject global);

View File

@ -199,12 +199,6 @@
-- @param #bool b
-- @return ComAudio#ComAudio self (return value: ccs.ComAudio)
--------------------------------
--
-- @function [parent=#ComAudio] isEnabled
-- @param self
-- @return bool#bool ret (return value: bool)
--------------------------------
--
-- @function [parent=#ComAudio] serialize
@ -212,10 +206,30 @@
-- @param #void r
-- @return bool#bool ret (return value: bool)
--------------------------------
--
-- @function [parent=#ComAudio] isEnabled
-- @param self
-- @return bool#bool ret (return value: bool)
--------------------------------
-- js NA<br>
-- lua NA
-- @function [parent=#ComAudio] onRemove
-- @param self
-- @return ComAudio#ComAudio self (return value: ccs.ComAudio)
--------------------------------
--
-- @function [parent=#ComAudio] init
-- @param self
-- @return bool#bool ret (return value: bool)
--------------------------------
-- js NA<br>
-- lua NA
-- @function [parent=#ComAudio] onAdd
-- @param self
-- @return ComAudio#ComAudio self (return value: ccs.ComAudio)
return nil

View File

@ -29,6 +29,13 @@
-- @param self
-- @return bool#bool ret (return value: bool)
--------------------------------
-- js NA<br>
-- lua NA
-- @function [parent=#ComController] onRemove
-- @param self
-- @return ComController#ComController self (return value: ccs.ComController)
--------------------------------
--
-- @function [parent=#ComController] update
@ -42,6 +49,13 @@
-- @param self
-- @return bool#bool ret (return value: bool)
--------------------------------
-- js NA<br>
-- lua NA
-- @function [parent=#ComController] onAdd
-- @param self
-- @return ComController#ComController self (return value: ccs.ComController)
--------------------------------
-- js ctor
-- @function [parent=#ComController] ComController

View File

@ -39,4 +39,18 @@
-- @param #void r
-- @return bool#bool ret (return value: bool)
--------------------------------
-- js NA<br>
-- lua NA
-- @function [parent=#ComRender] onRemove
-- @param self
-- @return ComRender#ComRender self (return value: ccs.ComRender)
--------------------------------
-- js NA<br>
-- lua NA
-- @function [parent=#ComRender] onAdd
-- @param self
-- @return ComRender#ComRender self (return value: ccs.ComRender)
return nil

View File

@ -24,6 +24,12 @@
-- @param self
-- @return bool#bool ret (return value: bool)
--------------------------------
--
-- @function [parent=#Component] onRemove
-- @param self
-- @return Component#Component self (return value: cc.Component)
--------------------------------
--
-- @function [parent=#Component] update
@ -45,9 +51,8 @@
--------------------------------
--
-- @function [parent=#Component] setOwner
-- @function [parent=#Component] onAdd
-- @param self
-- @param #cc.Node pOwner
-- @return Component#Component self (return value: cc.Component)
--------------------------------
@ -56,6 +61,13 @@
-- @param self
-- @return string#string ret (return value: string)
--------------------------------
--
-- @function [parent=#Component] setOwner
-- @param self
-- @param #cc.Node pOwner
-- @return Component#Component self (return value: cc.Component)
--------------------------------
--
-- @function [parent=#Component] create

View File

@ -91234,6 +91234,53 @@ int lua_cocos2dx_Component_isEnabled(lua_State* tolua_S)
return 0;
}
int lua_cocos2dx_Component_onRemove(lua_State* tolua_S)
{
int argc = 0;
cocos2d::Component* cobj = nullptr;
bool ok = true;
#if COCOS2D_DEBUG >= 1
tolua_Error tolua_err;
#endif
#if COCOS2D_DEBUG >= 1
if (!tolua_isusertype(tolua_S,1,"cc.Component",0,&tolua_err)) goto tolua_lerror;
#endif
cobj = (cocos2d::Component*)tolua_tousertype(tolua_S,1,0);
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Component_onRemove'", nullptr);
return 0;
}
#endif
argc = lua_gettop(tolua_S)-1;
if (argc == 0)
{
if(!ok)
{
tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Component_onRemove'", nullptr);
return 0;
}
cobj->onRemove();
lua_settop(tolua_S, 1);
return 1;
}
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Component:onRemove",argc, 0);
return 0;
#if COCOS2D_DEBUG >= 1
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Component_onRemove'.",&tolua_err);
#endif
return 0;
}
int lua_cocos2dx_Component_update(lua_State* tolua_S)
{
int argc = 0;
@ -91378,7 +91425,7 @@ int lua_cocos2dx_Component_init(lua_State* tolua_S)
return 0;
}
int lua_cocos2dx_Component_setOwner(lua_State* tolua_S)
int lua_cocos2dx_Component_onAdd(lua_State* tolua_S)
{
int argc = 0;
cocos2d::Component* cobj = nullptr;
@ -91398,32 +91445,29 @@ int lua_cocos2dx_Component_setOwner(lua_State* tolua_S)
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Component_setOwner'", nullptr);
tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Component_onAdd'", nullptr);
return 0;
}
#endif
argc = lua_gettop(tolua_S)-1;
if (argc == 1)
if (argc == 0)
{
cocos2d::Node* arg0;
ok &= luaval_to_object<cocos2d::Node>(tolua_S, 2, "cc.Node",&arg0, "cc.Component:setOwner");
if(!ok)
{
tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Component_setOwner'", nullptr);
tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Component_onAdd'", nullptr);
return 0;
}
cobj->setOwner(arg0);
cobj->onAdd();
lua_settop(tolua_S, 1);
return 1;
}
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Component:setOwner",argc, 1);
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Component:onAdd",argc, 0);
return 0;
#if COCOS2D_DEBUG >= 1
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Component_setOwner'.",&tolua_err);
tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Component_onAdd'.",&tolua_err);
#endif
return 0;
@ -91475,6 +91519,56 @@ int lua_cocos2dx_Component_getName(lua_State* tolua_S)
return 0;
}
int lua_cocos2dx_Component_setOwner(lua_State* tolua_S)
{
int argc = 0;
cocos2d::Component* cobj = nullptr;
bool ok = true;
#if COCOS2D_DEBUG >= 1
tolua_Error tolua_err;
#endif
#if COCOS2D_DEBUG >= 1
if (!tolua_isusertype(tolua_S,1,"cc.Component",0,&tolua_err)) goto tolua_lerror;
#endif
cobj = (cocos2d::Component*)tolua_tousertype(tolua_S,1,0);
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Component_setOwner'", nullptr);
return 0;
}
#endif
argc = lua_gettop(tolua_S)-1;
if (argc == 1)
{
cocos2d::Node* arg0;
ok &= luaval_to_object<cocos2d::Node>(tolua_S, 2, "cc.Node",&arg0, "cc.Component:setOwner");
if(!ok)
{
tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Component_setOwner'", nullptr);
return 0;
}
cobj->setOwner(arg0);
lua_settop(tolua_S, 1);
return 1;
}
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Component:setOwner",argc, 1);
return 0;
#if COCOS2D_DEBUG >= 1
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Component_setOwner'.",&tolua_err);
#endif
return 0;
}
int lua_cocos2dx_Component_create(lua_State* tolua_S)
{
int argc = 0;
@ -91524,11 +91618,13 @@ int lua_register_cocos2dx_Component(lua_State* tolua_S)
tolua_function(tolua_S,"setEnabled",lua_cocos2dx_Component_setEnabled);
tolua_function(tolua_S,"setName",lua_cocos2dx_Component_setName);
tolua_function(tolua_S,"isEnabled",lua_cocos2dx_Component_isEnabled);
tolua_function(tolua_S,"onRemove",lua_cocos2dx_Component_onRemove);
tolua_function(tolua_S,"update",lua_cocos2dx_Component_update);
tolua_function(tolua_S,"getOwner",lua_cocos2dx_Component_getOwner);
tolua_function(tolua_S,"init",lua_cocos2dx_Component_init);
tolua_function(tolua_S,"setOwner",lua_cocos2dx_Component_setOwner);
tolua_function(tolua_S,"onAdd",lua_cocos2dx_Component_onAdd);
tolua_function(tolua_S,"getName",lua_cocos2dx_Component_getName);
tolua_function(tolua_S,"setOwner",lua_cocos2dx_Component_setOwner);
tolua_function(tolua_S,"create", lua_cocos2dx_Component_create);
tolua_endmodule(tolua_S);
std::string typeName = typeid(cocos2d::Component).name();

View File

@ -2049,6 +2049,8 @@ int register_all_cocos2dx(lua_State* tolua_S);

View File

@ -288,6 +288,7 @@ Downloader::HeaderInfo Downloader::prepareHeader(const std::string &srcUrl, void
curl_easy_setopt(header, CURLOPT_URL, srcUrl.c_str());
curl_easy_setopt(header, CURLOPT_HEADER, 1);
curl_easy_setopt(header, CURLOPT_NOBODY, 1);
curl_easy_setopt(header, CURLOPT_NOSIGNAL, 1);
if (curl_easy_perform(header) == CURLE_OK)
{
char *url;
@ -296,16 +297,24 @@ Downloader::HeaderInfo Downloader::prepareHeader(const std::string &srcUrl, void
curl_easy_getinfo(header, CURLINFO_CONTENT_TYPE, &contentType);
curl_easy_getinfo(header, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &info.contentSize);
curl_easy_getinfo(header, CURLINFO_RESPONSE_CODE, &info.responseCode);
info.url = url;
info.contentType = contentType;
info.valid = true;
if (_onHeader)
if (contentType == nullptr || info.contentSize == -1 || info.responseCode >= 400)
{
_onHeader(srcUrl, info);
info.valid = false;
}
else
{
info.url = url;
info.contentType = contentType;
info.valid = true;
}
}
else
if (info.valid && _onHeader)
{
_onHeader(srcUrl, info);
}
else if (!info.valid)
{
info.contentSize = -1;
std::string msg = StringUtils::format("Can not get content size of file (%s) : Request header failed", srcUrl.c_str());
@ -325,6 +334,11 @@ long Downloader::getContentSize(const std::string &srcUrl)
return info.contentSize;
}
Downloader::HeaderInfo Downloader::getHeader(const std::string &srcUrl)
{
return prepareHeader(srcUrl);
}
void Downloader::getHeaderAsync(const std::string &srcUrl, const HeaderCallback &callback)
{
setHeaderCallback(callback);
@ -401,25 +415,26 @@ void Downloader::downloadToBuffer(const std::string &srcUrl, const std::string &
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK)
{
_fileUtils->removeFile(data.path + data.name + TEMP_EXT);
std::string msg = StringUtils::format("Unable to download file: [curl error]%s", curl_easy_strerror(res));
std::string msg = StringUtils::format("Unable to download file to buffer: [curl error]%s", curl_easy_strerror(res));
this->notifyError(msg, customId, res);
}
else
{
Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{
if (!ptr.expired())
{
std::shared_ptr<Downloader> downloader = ptr.lock();
auto successCB = downloader->getSuccessCallback();
if (successCB != nullptr)
{
successCB(data.url, "", data.customId);
}
}
});
}
curl_easy_cleanup(curl);
Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{
if (!ptr.expired())
{
std::shared_ptr<Downloader> downloader = ptr.lock();
auto successCB = downloader->getSuccessCallback();
if (successCB != nullptr)
{
successCB(data.url, "", data.customId);
}
}
});
}
void Downloader::downloadAsync(const std::string &srcUrl, const std::string &storagePath, const std::string &customId/* = ""*/)

View File

@ -107,7 +107,7 @@ public:
std::string url;
std::string contentType;
double contentSize;
double responseCode;
long responseCode;
};
typedef std::unordered_map<std::string, DownloadUnit> DownloadUnits;
@ -139,6 +139,8 @@ public:
long getContentSize(const std::string &srcUrl);
HeaderInfo getHeader(const std::string &srcUrl);
void getHeaderAsync(const std::string &srcUrl, const HeaderCallback &callback);
void downloadToBufferAsync(const std::string &srcUrl, unsigned char *buffer, const long &size, const std::string &customId = "");

View File

@ -1,5 +1,5 @@
{
"version":"v3-deps-59",
"version":"v3-deps-61",
"zip_file_size":"138162176",
"repo_name":"cocos2d-x-3rd-party-libs-bin",
"repo_parent":"https://github.com/cocos2d/",

View File

@ -2999,6 +2999,12 @@
"external/recast/fastlz/fastlz.h",
"external/recast/proj.win32/librecast.vcxproj",
"external/recast/proj.win32/librecast.vcxproj.filters",
"external/recast/proj.win8.1-universal/librecast.Shared/librecast.Shared.vcxitems",
"external/recast/proj.win8.1-universal/librecast.Shared/librecast.Shared.vcxitems.filters",
"external/recast/proj.win8.1-universal/librecast.Windows/librecast.Windows.vcxproj",
"external/recast/proj.win8.1-universal/librecast.Windows/librecast.Windows.vcxproj.filters",
"external/recast/proj.win8.1-universal/librecast.WindowsPhone/librecast.WindowsPhone.vcxproj",
"external/recast/proj.win8.1-universal/librecast.WindowsPhone/librecast.WindowsPhone.vcxproj.filters",
"external/sqlite3/Android.mk",
"external/sqlite3/include/sqlite3.h",
"external/sqlite3/include/sqlite3ext.h",

View File

@ -3,6 +3,11 @@
USING_NS_CC;
static cocos2d::Size designResolutionSize = cocos2d::Size(480, 320);
static cocos2d::Size smallResolutionSize = cocos2d::Size(480, 320);
static cocos2d::Size mediumResolutionSize = cocos2d::Size(1024, 768);
static cocos2d::Size largeResolutionSize = cocos2d::Size(2048, 1536);
AppDelegate::AppDelegate() {
}
@ -44,6 +49,25 @@ bool AppDelegate::applicationDidFinishLaunching() {
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);
// Set the design resolution
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);
Size frameSize = glview->getFrameSize();
// if the frame's height is larger than the height of medium size.
if (frameSize.height > mediumResolutionSize.height)
{
director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));
}
// if the frame's height is larger than the height of small size.
else if (frameSize.height > smallResolutionSize.height)
{
director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width));
}
// if the frame's height is smaller than the height of medium size.
else
{
director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width));
}
register_all_packages();
// create a scene. it's an autorelease object

View File

@ -18,9 +18,9 @@ bool EnemyController::init()
return true;
}
void EnemyController::onEnter()
void EnemyController::onAdd()
{
ComController::onEnter();
ComController::onAdd();
// Determine where to spawn the target along the Y axis
Size winSize = Director::getInstance()->getVisibleSize();
float minY = getOwner()->getContentSize().height/2;
@ -52,7 +52,7 @@ void EnemyController::onEnter()
_owner->runAction( Sequence::create(actionMove, actionMoveDone, nullptr) );
}
void EnemyController::onExit()
void EnemyController::onRemove()
{
}

View File

@ -14,8 +14,8 @@ protected:
public:
virtual bool init() override;
virtual void onEnter() override;
virtual void onExit() override;
virtual void onAdd() override;
virtual void onRemove() override;
virtual void update(float delta) override;
static EnemyController* create(void);

View File

@ -20,13 +20,13 @@ bool PlayerController::init()
return true;
}
void PlayerController::onEnter()
void PlayerController::onAdd()
{
ComController::onEnter();
ComController::onAdd();
setTouchEnabled(true);
}
void PlayerController::onExit()
void PlayerController::onRemove()
{
setTouchEnabled(false);
}

View File

@ -17,8 +17,8 @@ public:
public:
virtual bool init() override;
virtual void onEnter() override;
virtual void onExit() override;
virtual void onAdd() override;
virtual void onRemove() override;
virtual void update(float delta) override;
static PlayerController* create(void);

View File

@ -19,9 +19,9 @@ bool ProjectileController::init()
return true;
}
void ProjectileController::onEnter()
void ProjectileController::onAdd()
{
ComController::onEnter();
ComController::onAdd();
auto winSize = Director::getInstance()->getVisibleSize();
auto origin = Director::getInstance()->getVisibleOrigin();
_owner->setPosition( Vec2(origin.x+20, origin.y+winSize.height/2) );
@ -30,7 +30,7 @@ void ProjectileController::onEnter()
static_cast<SceneController*>(com)->getProjectiles().pushBack(_owner);
}
void ProjectileController::onExit()
void ProjectileController::onRemove()
{
}

View File

@ -13,8 +13,8 @@ protected:
public:
virtual bool init() override;
virtual void onEnter() override;
virtual void onExit() override;
virtual void onAdd() override;
virtual void onRemove() override;
virtual void update(float delta) override;
static ProjectileController* create(void);

View File

@ -24,16 +24,16 @@ bool SceneController::init()
return true;
}
void SceneController::onEnter()
void SceneController::onAdd()
{
ComController::onEnter();
ComController::onAdd();
_fAddTargetTime = 1.0f;
static_cast<ComAudio*>(_owner->getComponent("Audio"))->playBackgroundMusic("background.wav", true);
static_cast<ComAttribute*>(_owner->getComponent("CCComAttribute"))->setInt("KillCount", 0);
}
void SceneController::onExit()
void SceneController::onRemove()
{
}

View File

@ -13,8 +13,8 @@ protected:
public:
virtual bool init() override;
virtual void onEnter() override;
virtual void onExit() override;
virtual void onAdd() override;
virtual void onRemove() override;
virtual void update(float delta) override;
static SceneController* create();

View File

@ -192,7 +192,6 @@ var RemoteTextureTest = TextureCacheTestBase.extend({
_title:"Remote Texture Test",
_subtitle:"",
_remoteTex: "http://cn.cocos2d-x.org/image/logo.png",
_sprite : null,
onEnter:function () {
this._super();
if('opengl' in cc.sys.capabilities && !cc.sys.isNative){
@ -205,19 +204,21 @@ var RemoteTextureTest = TextureCacheTestBase.extend({
},
startDownload: function() {
cc.textureCache.addImageAsync(this._remoteTex, this.texLoaded, this);
var imageUrlArray = ["http://www.cocos2d-x.org/s/upload/v35.jpg", "http://www.cocos2d-x.org/s/upload/testin.jpg", "http://www.cocos2d-x.org/s/upload/geometry_dash.jpg", "http://cn.cocos2d-x.org/image/logo.png"];
for (var i = 0; i < imageUrlArray.length; i++) {
cc.textureCache.addImageAsync(imageUrlArray[i], this.texLoaded, this);
}
},
texLoaded: function(texture) {
if (texture instanceof cc.Texture2D) {
cc.log("Remote texture loaded: " + this._remoteTex);
if (this._sprite) {
this.removeChild(this._sprite);
}
this._sprite = new cc.Sprite(texture);
this._sprite.x = cc.winSize.width/2;
this._sprite.y = cc.winSize.height/2;
this.addChild(this._sprite);
cc.log("Remote texture loaded");
var sprite = new cc.Sprite(texture);
sprite.x = cc.winSize.width/2;
sprite.y = cc.winSize.height/2;
this.addChild(sprite);
}
else {
cc.log("Fail to load remote texture");

View File

@ -103,9 +103,12 @@ var XHRTestLayer = cc.Layer.extend({
streamXHREventsToLabel(xhr, statusGetLabel, responseLabel, "GET");
// 5 seconds for timeout
xhr.timeout = 5000;
xhr.setRequestHeader("Accept-Encoding","gzip,deflate");
//set arguments with <URL>?xxx=xxx&yyy=yyy
xhr.open("GET", "http://httpbin.org/get?show_env=1", true);
xhr.open("GET", "http://geek.csdn.net/news/detail/33683", true);
xhr.send();
},
@ -129,6 +132,7 @@ var XHRTestLayer = cc.Layer.extend({
streamXHREventsToLabel(xhr, statusPostLabel, responseLabel, "POST");
xhr.open("POST", "http://httpbin.org/post");
//set Content-type "text/plain;charset=UTF-8" to post plain text
xhr.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
xhr.send("plain text message");

@ -1 +1 @@
Subproject commit 3c9958a1d2fc1ce1cea582c6bde0efc5a9537654
Subproject commit 4f0fd0a30f010756e01a0e1b9c341873e981c10a

View File

@ -118,7 +118,7 @@ skip = Node::[^setPosition$ setGLServerState description getUserObject .*UserDat
Device::[getTextureDataForText],
EventDispatcher::[dispatchCustomEvent],
EventCustom::[getUserData setUserData],
Component::[serialize],
Component::[serialize onAdd onRemove update],
EventListenerCustom::[init],
EventListener::[init],
Scene::[getCameras getLights initWithPhysics createWithPhysics getPhysicsWorld getPhysics3DWorld setPhysics3DDebugCamera setNavMesh getNavMesh setNavMeshDebugCamera],