AppUtils 常用函数总结(Cocos2d-x 3.9)
2015-12-10 12:15
411 查看
1、随机函数
2、点击区域判断
3、触摸方法模拟按钮的触摸点击
方法实现:
4、android下输出log常用宏
float AppUtils::randomFloat(float low, float high) { //0.0-1.0 float r = rand()/(RAND_MAX+0.1); return ((high+1) - low) * r + low; }
2、点击区域判断
CCRect AppUtils::boundingBoxForWorld(CCNode* node) { CCRect rect = CCRectZero; if (node==NULL) { return rect; } CCPoint anchorPoint = node->getAnchorPoint(); CCSize widgetSize = node->boundingBox().size; CCPoint worldPosition = node->getPosition(); worldPosition.x -= widgetSize.width*anchorPoint.x; worldPosition.y -= widgetSize.height*anchorPoint.y; if (node!=NULL) { CCNode* parent = node->getParent(); while (parent != NULL) { float scaleX = parent->getScaleX(); float scaleY = parent->getScaleY(); float scaledWidth = widgetSize.width*scaleX; float scaledHeight = widgetSize.height*scaleY; worldPosition.x += (widgetSize.width - scaledWidth) / 2; worldPosition.y += (widgetSize.height - scaledHeight) / 2; widgetSize.width = scaledWidth; widgetSize.height = scaledHeight; worldPosition = worldPosition + parent->getBoundingBox().origin; parent = parent->getParent(); } rect.origin = worldPosition; rect.size= widgetSize; return rect; } return rect; }
3、触摸方法模拟按钮的触摸点击
static void setColorForAll(Sprite* target, Color3B color= Color3B::GRAY); static void btnTouchBegin(Sprite* target, Point p, Color3B color = Color3B::GRAY); static void btnTouchMoved(Sprite* target, Point p, Color3B color = Color3B::WHITE); static bool btnTouchEnded(Sprite* target, Point p, Color3B color = Color3B::WHITE);
方法实现:
void AppUtils::setColorForAll(Sprite* target, Color3B color) { if (target != NULL) { target->setColor(color); Vector<Node*> children = target->getChildren(); for (size_t i = 0; i < children.size(); i++) { Sprite* item = (Sprite*)children.at(i); if (item != NULL) { item->setColor(color); } } } } void AppUtils::btnTouchBegin(Sprite* target, Point p, Color3B color) { if (target != NULL&&target->boundingBox().containsPoint(p)) { setColorForAll(target, color); } } void AppUtils::btnTouchMoved(Sprite* target, Point p, Color3B color) { if (target != NULL&&!target->boundingBox().containsPoint(p) && (target->getColor()== Color3B::GRAY)) { setColorForAll(target, color); } } bool AppUtils::btnTouchEnded(Sprite* target, Point p, Color3B color) { if (target != NULL&&target->boundingBox().containsPoint(p) && (Color3B::GRAY==target->getColor())) { setColorForAll(target, color); return true; } return false; }
4、android下输出log常用宏
#pragma once #include "cocos2d.h" USING_NS_CC; #if !defined(COCOS2D_DEBUG) || COCOS2D_DEBUG == 0 #define LOG_DEBUG(...) do {} while (0) #define LOG_ERROR(...) do {} while (0) #define LOG_INFO(...) do {} while (0) #define LOG_WARN(...) do {} while (0) #elif (COCOS2D_DEBUG == 1&&(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)) #define LOG_DEBUG(__TAG__,format, ...) log(__TAG__":"##format, ##__VA_ARGS__) #define LOG_ERROR(__TAG__,format, ...) log(__TAG__":"##format, ##__VA_ARGS__) #define LOG_INFO(__TAG__,format, ...) log(__TAG__":"##format, ##__VA_ARGS__) #define LOG_WARN(__TAG__,format, ...) log(__TAG__":"##format, ##__VA_ARGS__) #elif (COCOS2D_DEBUG == 1&&(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)) #define LOG_DEBUG( __TAG__, ...) __android_log_print(ANDROID_LOG_DEBUG, __TAG__, __VA_ARGS__) #define LOG_ERROR( __TAG__, ...) __android_log_print(ANDROID_LOG_ERROR, __TAG__, __VA_ARGS__) #define LOG_INFO( __TAG__, ...) __android_log_print(ANDROID_LOG_INFO, __TAG__, __VA_ARGS__) #define LOG_WARN( __TAG__, ...) __android_log_print(ANDROID_LOG_WARN, __TAG__, __VA_ARGS__) #endif // COCOS2D_DEBUG
相关文章推荐
- cocos2dx - v2.3.3编辑器简单使用及不同分辨率适配
- Cocos2D-X shader(二) OpenGL渲染管线
- cocos2d-x3.0 相对布局(一)
- COCOS2D-3.9 FileUtils 分析(三) 文件查找深入
- Cocos2D-Android-1之源码详解:7.CocosNodeTest
- COCOS2D-3.9 FileUtils 分析(二) 变量深入
- cocos2dx 消息推送
- 小小菜之Cocos2d-x游戏开发旅程——Lua之抛物线运动
- 小小菜之Cocos2d-x游戏开发旅程——Lua之摇杆实现
- Cocos2d-x 3.X里的坑(2)——安卓android APP应用名称的修改
- cocos2dx简介
- cocos2dx中lua注册事件函数详解
- cocos2dx创建电子时钟
- Cocos2D-Android-1之源码详解:6.ClickAndMoveTest
- cocos2d-x 3.x相应键盘事件
- Cocos2D-Android-1之源码详解:5.Box2dTest
- 1、Cocos2dx 3.0游戏开发三找一小块前言
- cocos2dx 3.4 测试例 目录
- 【cocos2d-js系列问题】Cannot read property 'x' of null错误解决办法
- Cocos2d-x下Lua调用自定义C++类和函数的最佳实践