坑1:
如果提示找不到"extensions/ExtensionExport.h",那麼請在附加包含目錄里加上$(EngineRoot)路徑。
坑2:
新版本的Scale9Sprite在cocos2d::ui裏面。
坑3:
cocos2d-x的緩存機制:
原帖地址:
http://blog.csdn.net/natsu1211/article/details/27092903
坑4:
cocos2d-x的觸摸機制:
原帖地址:
http://www.tuicool.com/articles/Rjim6z
http://blog.csdn.net/tom_and_jerry_zhao/article/details/51140561
//添加觸摸響應
auto listener1 = cocos2d::EventListenerTouchOneByOne::create();
listener1->setSwallowTouches(true); //不向下傳遞觸摸
listener1->onTouchBegan = [&](cocos2d::Touch* touch, cocos2d::Event* evt)->bool
{
if (_curState == Button::ButtonState::ButtonState_Disable)
return false;
auto target = evt->getCurrentTarget();//獲取目前的點擊對象
//獲取點擊的座標在target的座標系中的位置
cocos2d::Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());
cocos2d::Size targetSize = target->getContentSize();
cocos2d::Rect rct = { 0,0,targetSize.width,targetSize.height };
bool isClicked = rct.containsPoint(locationInNode);
if (isClicked)
{
if (_curState == Button::ButtonState::ButtonState_Up)
{
this->setButtonState(Button::ButtonState::ButtonState_Down);
this->onButtonPressed();
}
return true;
}
return false;//這裏返回false那麼後面的onTouchMoved,onTouchEnded就不會被調用了
};
listener1->onTouchEnded = [&](cocos2d::Touch* touch, cocos2d::Event* evt)->void
{
auto target = evt->getCurrentTarget();//獲取目前的點擊對象
//獲取點擊的座標在target的座標系中的位置
cocos2d::Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());
cocos2d::Size targetSize = target->getContentSize();
cocos2d::Rect rct = { 0,0,targetSize.width,targetSize.height };
bool isInRegion = rct.containsPoint(locationInNode);
if (isInRegion)
{
if (_curState == Button::ButtonState::ButtonState_Down)
{
this->setButtonState(ButtonState::ButtonState_Up);
this->onButtonReleased();
}
}
};
listener1->onTouchMoved = [&](cocos2d::Touch* touch, cocos2d::Event* evt)->void
{
auto target = evt->getCurrentTarget();//獲取目前的點擊對象
//獲取點擊的座標在target的座標系中的位置
cocos2d::Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());
cocos2d::Size targetSize = target->getContentSize();
cocos2d::Rect rct = { 0,0,targetSize.width,targetSize.height };
bool isInRegion = rct.containsPoint(locationInNode);
if (!isInRegion)
{
if (_curState == Button::ButtonState::ButtonState_Down)
{
this->setButtonState(ButtonState::ButtonState_Up);
this->onButtonMoveOutsideRange();
}
}
};
//添加按鍵響應
cocos2d::Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener1, _upSprite);
別忘了在onExit裏面把這個不用的listener1註銷掉,否則會報錯
void Button::onExit()
{
//在exit之前,得釋放一些不用的資源
cocos2d::Director::getInstance()->getEventDispatcher()->removeEventListenersForTarget(_upSprite);
UIObject::onExit();
}
cocos2d-x打包android包命令
進入proj.android目錄
運行cocos compile -p android
在cocos2d-x c++項目中集成lua
1.首先去lua的官網下載lua源碼
2.將源碼解壓出來放入我們的項目Classes目錄裏面
3.修改adnroid.mk文件
4.運行cocos compile -p android
期間可能會遇到llex.c文件中出錯,照下面這樣改即可:
當然,這樣處理比較暴力,如果有更好的辦法,請告知在下。這樣修改之後,應該就能正確的打包了。但是打出來的包運行時候黑屏了,我的天哪,待我找找辦法。
有些文件在android平臺上找不到
請使用cocos2d::FileUtils::fullPathForFilename(filename),一次性解決所有煩惱。