cocos2d-x 如何自定义简单的scrollView/scrollLayer

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档) SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心... 立即下载

时间:3-9

平台:xcode4.2 cocos2d-x *.11.*

说明:简单的实现scrollView,没有加速减速功能,没有进度条。

上图:



//
//  CCUIScrollView.h
//  cocos2dUI
//
//  Created by rorger on 12-3-7. contact me:jhcyd112@163.com
//  Copyright 2012年 __MyCompanyName__. All rights reserved.
//

#ifndef cocos2dUI_CCUIScrollView_h
#define cocos2dUI_CCUIScrollView_h
#include "cocos2d.h"
USING_NS_CC;

class CCUIScrollView:public CCLayer{
public:
    ~CCUIScrollView();
    CCUIScrollView(const CCRect& mRect);
    static CCUIScrollView* scrollViewWithCCRect(const CCRect& mRect);
    static CCUIScrollView* scrollViewWithColorAndCCRect(const ccColor4B& color,const CCRect& mRect);
    virtual bool init();
    
    //addTargetedDelegate
    virtual void registerWithTouchDispatcher(void);
    virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
    virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
    virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
    virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);
    
    //clip contentLayer
    virtual void visit();
    
    //add child to contentLayer
    virtual void addChildInContentLayer(CCNode * child){contentLayer->addChild(child); }
    virtual void addChildInContentLayer(CCNode * child, int zOrder){contentLayer->addChild(child, zOrder); }
    virtual void addChildInContentLayer(CCNode * child, int zOrder, int tag){contentLayer->addChild(child, zOrder, tag);}
    
    //set method
    void setContentLayerColor(const ccColor4B& mColor);
    void setContentLayerSize(const CCSize& mSize){contentLayer->setContentSize(mSize);}

    //get method
    virtual bool getIsTouchInContentLayer(CCTouch *pTouch);
    const ccColor3B& getContentLayerColor(){return contentLayer->getColor();}
    const CCSize& getContentLayerSize(){return contentLayer->getContentSize();}
#warning this method is for test.
    CCLayerColor*  getScrollLayerCellAtIndex(int i);
protected:
    CC_SYNTHESIZE(CCLayerColor*, contentLayer, ContentLayer)
    CC_SYNTHESIZE(bool, isLockHorizontal, IsLockHorizontal)
    CC_SYNTHESIZE(bool, isLockVertical, IsLockVertical)
    CC_SYNTHESIZE(bool, isScrolling, IsScrolling)
private:
    //CCPoint based on world coordinates
    CCPoint preTouchPoint;
    CCPoint currentTouchPoint;
};


#endif//cocos2dUI_CCUIScrollView_h

//
//  CCUIScrollView.cpp
//  cocos2dUI
//
//  Created by rorger on 12-3-7.contact me:jhcyd112@163.com
//  Copyright 2012年 __MyCompanyName__. All rights reserved.
//

#include "CCUIScrollView.h"
USING_NS_CC;
#define contentViewFontColorRed  (GLubyte)(255 * 0.8) 
#define contentViewFontColorGreen  (GLubyte)(255 * 0.9) 
#define contentViewFontColorBlue  (GLubyte)(255 * 0.2) 
#define contentViewFontColorAlpha 1.0
#define kScrollLayerCellPositionY 25
#define myFontColor ccc3(contentViewFontColorRed, contentViewFontColorGreen, contentViewFontColorBlue)

CCLayerColor*  CCUIScrollView::getScrollLayerCellAtIndex(int i){
    //scrollLayer一行:scrollLayerCell
    CCLayerColor *scrollLayerCell = CCLayerColor::layerWithColorWidthHeight(ccc4((i%2==0)?0:100,(i%2==0)?100:0,0,i*30+50), 444, 50);
    scrollLayerCell->setIsTouchEnabled(false);
    scrollLayerCell->setPosition(ccp(0,i*50+50));
    CCLabelTTF *pLabelInfoName  = CCLabelTTF::labelWithString("item1:", "Arial", 20);
    pLabelInfoName->setScaleX(0.65);
    pLabelInfoName->setScaleY(0.65); 
    pLabelInfoName->setColor(myFontColor);
    pLabelInfoName->setAnchorPoint(ccp(0.0,0.5));
    pLabelInfoName->setPosition(ccp(150, kScrollLayerCellPositionY));
    scrollLayerCell->addChild(pLabelInfoName);
    CCLabelTTF *pLabelInfoValue = CCLabelTTF::labelWithString("item2", "Arial", 20);
    pLabelInfoValue->setScaleX(0.65);
    pLabelInfoValue->setScaleY(0.65); 
    pLabelInfoValue->setColor(myFontColor);
    pLabelInfoValue->setPosition(ccp(300, kScrollLayerCellPositionY));
    scrollLayerCell->addChild(pLabelInfoValue);
    return scrollLayerCell;
}

 
CCUIScrollView::CCUIScrollView(const CCRect& mRect){
    this->setPosition(mRect.origin);
    this->setContentSize(mRect.size);
    this->setIsTouchEnabled(true);
    this->setIsLockHorizontal(true);
    this->setIsScrolling(false);
    contentLayer = CCLayerColor::layerWithColorWidthHeight(
                                                           ccc4( 120,120, 120,80), mRect.size.width, mRect.size.height);
    contentLayer->setIsRelativeAnchorPoint(true);
    contentLayer->setAnchorPoint(ccp(0.5,1.0));
#warning this is for test
    for (int i = 0; i < 5; i++) {
        contentLayer->addChild(getScrollLayerCellAtIndex(i));
    }
    CCPoint contentLayerPosition = CCPointMake(mRect.origin.x + mRect.size.width/2.0, mRect.origin.y+mRect.size.height);
    contentLayer->setPosition(contentLayerPosition);
    this->addChild(contentLayer);
}

CCUIScrollView* CCUIScrollView::scrollViewWithCCRect(const CCRect& mRect){
    CCUIScrollView *pScrollView = new CCUIScrollView(mRect);
    if(pScrollView && pScrollView->init()){
        pScrollView->autorelease();
        return pScrollView;
    }
    CC_SAFE_DELETE(pScrollView)
    return NULL;
}

CCUIScrollView* CCUIScrollView::scrollViewWithColorAndCCRect(const ccColor4B& color,const CCRect& mRect){
    CCUIScrollView *pScrollView = new CCUIScrollView(mRect);
    if(pScrollView && pScrollView->init()){
        pScrollView->setContentLayerColor(color);
        pScrollView->autorelease();
        return pScrollView;
    }
    CC_SAFE_DELETE(pScrollView)
    return NULL;
}

CCUIScrollView::~CCUIScrollView(){
    
}

bool CCUIScrollView::init(){
    //TODO
    return true;
}

void CCUIScrollView::registerWithTouchDispatcher(){
    //change 0 if you need priority higher or lower.
    //swallows the touch message
    CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, true);
}

bool CCUIScrollView::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){
    
    CCPoint locationInView = pTouch->locationInView(pTouch->view());
    preTouchPoint = CCDirector::sharedDirector()->convertToGL(locationInView);
    if (this->getIsTouchInContentLayer(pTouch)) {
        isScrolling = true;
        printf("Began Scrolling\n");
    }
    else 
        isScrolling = false;
    return isScrolling;
}

void CCUIScrollView::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){
 
    CCPoint locationInView = pTouch->locationInView(pTouch->view());
    currentTouchPoint = CCDirector::sharedDirector()->convertToGL(locationInView);
    CCPoint deltaPoint = ccpSub(currentTouchPoint, preTouchPoint);
    if(this->getIsLockHorizontal())
        deltaPoint.x=0;
    else if(this->getIsLockVertical())
        deltaPoint.y=0; 
    contentLayer->setPosition(ccpAdd(contentLayer->getPosition(), deltaPoint));
    preTouchPoint = currentTouchPoint;
#warning this is for test
    printf("Moving\n");
}

void CCUIScrollView::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){
#warning this is for test
    printf("Moving End\n");
}

void CCUIScrollView::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent){
    
}

void CCUIScrollView::setContentLayerColor(const ccColor4B &mColor){
    contentLayer->setColor(ccc3(mColor.r, mColor.g, mColor.b));
    contentLayer->setOpacity(mColor.a);
}

bool CCUIScrollView::getIsTouchInContentLayer( CCTouch *pTouch){
    CCPoint nodeSpaceLocation = this->convertTouchToNodeSpace(pTouch);
#warning this is for test
    printf("nodeSpaceLocation: %f,%f     ",nodeSpaceLocation.x,nodeSpaceLocation.y);
    CCRect contentLayerRect = CCRectZero;
    contentLayerRect.origin = CCPointZero;
    contentLayerRect.size = contentLayer->getContentSize();
#warning this is for test
    printf("RectOrigin:%f,%f  RectSize:%f,%f\n",contentLayerRect.origin.x,contentLayerRect.origin.y,contentLayerRect.size.width,contentLayerRect.size.height);
    return CCRect::CCRectContainsPoint(contentLayerRect, nodeSpaceLocation);
}

void CCUIScrollView::visit(){
    CCPoint convertedLocationLowerLeft = this->getParent()->convertToWorldSpace(this->getPosition());
    glEnable(GL_SCISSOR_TEST);
    glScissor(convertedLocationLowerLeft.x, convertedLocationLowerLeft.y,
              this->getContentSize().width, this->getContentSize().height);
    CCLayer::visit();
    glDisable(GL_SCISSOR_TEST);
}


增加上述两个文件,然后在HelloWorldScene.cpp的init方法增加:

CCUIScrollView *scrollView = CCUIScrollView::scrollViewWithCCRect(CCRectMake(20, 20, 444, 200));

    this->addChild(scrollView);


运行即可。


YOLOv8作物病害检测实战源码 这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。 立即下载

相关推荐

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994

cocos2d-x 取得资源的路径的函数

2012.4.10 平台:vs2010, cocos2d-x, win7 32   CCLog("%s",CCFileUtils::getWriteablePath().c_str()); CCLog("%s", CCFileUtils::fullPathFromRelativePath("")); CCLog("%s",CCFileUtils::fullPathFromRelative

9404

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?.docx

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?

一步教你在 cocos2d-x 中使用 tinyxml读取Resource中xml文件的信息

时间: 2012.4.10 平台: vs2010, cocos2d-x *.12.* , tinyxml:2.6.2 其中:tinyxml 下载:http://sourceforge.net/projects/tinyxml/files/ tinyxml相关网页: www.sourceforge.net/projects/tinyxml Original code by Lee Thom

6562

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

教你在vs2010下输出cocos2d-x的调试信息

上次在xcode下,使用printf直接在调试窗口可以看到输出的信息,在vs2010中没有看到,于是查看了源代码,找到函数CCLog void CCLog(const char * pszFormat, ...) { char szBuf[MAX_LEN]; va_list ap; va_start(ap, pszFormat); vsnprintf_s(szB

6336

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

cocos2d-x中CCLayer捕捉触摸消息和坐标转换以及窗口剪裁

时间:2012.3.5 平台:xcode4.0,cocos2d-x 测试坐标和触摸消息 先了解下基本概念(不足请指正): 坐标转换主要就4个函数:         CCPointconvertToNodeSpace(const CCPoint& worldPoint);         CCPointconvertToWorldSpace(const CCPoint& nodePo

4645

高校技术转移办公室人员如何系统化管理科技成果信息?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何构建标准化、模块化的智能服务工具?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Tween算法的深入分析

Tween算法:http://www.robertpenner.com/easing/ 这里有文档。 我们来深入解析下Tween算法公式吧,庖丁解牛 开始之前,必须了解下一些知识: 函数关于点或者直线对称方法 来自百度百科。 http://zhidao.baidu.com/question/114652008.html http://zhidao.baidu.com/question/

4074

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

Cocos2d-x移植的Tween算法

时间:3/14/2012 平台:xcode 4.2 + cocos2d-x  *.11.0  首先说明,cocos2d-x已经有实现这些算法了,本人只是出于兴趣动手实现下 不知道tween算法的朋友看看这个: 原文链接:http://www.cnblogs.com/cloudgamer/archive/2009/01/06/Tween.html Tween又称为补间动画或中间动画; 上

3156

PSIM-三相维也纳VIENNA整流器电压电流双闭环+中点电位平衡SVPWM控制仿真

内容概要:本文档详细介绍了一种基于PSIM软件实现的三相维也纳(VIENNA)整流器仿真模型,重点实现了电压电流双闭环控制与中点电位平衡的SVPWM调制策略。该仿真系统通过精确的控制算法有效提升了整流器的功率因数,降低了输入电流谐波含量,并解决了三电平拓扑中常见的直流侧中点电位偏移问题,具有较高的工程实用价值,适用于高效率、高功率密度的电力电子系统设计与科研验证。文档还整合了丰富的配套资源,涵盖多种电力电子变换器拓扑结构、先进控制算法及典型应用场景,形成了系统化的技术资料体系,有助于深入理解现代整流技术的核心原理与发展动态。; 适合人群:面向从事电力电子、电气工程、新能源变换系统等领域的科研人员、高校研究生以及具备一定仿真基础的工程技术人员。; 使用场景及目标:①深入研究三相VIENNA整流器的工作机理与控制特性;②掌握电压外环、电流内环双闭环控制结构的设计方法;③理解并实现SVPWM调制技术与中点电位平衡控制策略的协同作用;④开展相关控制算法的仿真验证、性能优化与实验对比,为高性能整流装置的研发提供理论支撑和技术原型。; 阅读建议:建议结合文中列出的其他仿真案例(如PWM整流器、LLC谐振变换器、DAB变换器等)进行横向对比学习,充分利用所提供的PSIM、MATLAB/Simulink等多平台仿真资源,重点关注控制逻辑与主电路的耦合关系,通过参数调试与波形分析深化对系统动态响应和稳态性能的理解,强化“理论—建模—仿真—优化”的闭环研究能力。

产业园区运营负责人如何利用数智工具提升园区企业的技术对接效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

vs2010+win7+cocos2d-1.0.1-x-0.12.0配置 *三步骤*

时间:3/11/2012 平台:vs2010+win7+cocos2d-1.0.1-x-0.12.0 第一步:下载 下载cocos2d-x:        http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download        我放在e盘根目录,解压,解压后目录是:E:\cocos2d-1.0.1-x-0.12.0 第二步:

1925

解题报告-美团点评2017秋招笔试编程题--常见动态规划问题

晚上就要美团笔试了,在牛客上刷套美团的题练练手,四道题目全都是典型题目,经典的连题面都懒得改那种,也都不难,很基础的动态规划问题。[编程题] 大富翁游戏时间限制:1秒空间限制:32768K大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步。求玩家走到第n步(n&lt;=骰子最大点数且是方法的唯一入参)时,总共有多少种投骰子的方法。 输...

聂小白的专栏 1719
上一篇: cocos2d-x中CCLayer捕捉触摸消息和坐标转换以及窗口剪裁
下一篇: vs2010+win7+opengl配置
rorger
博客等级 码龄16年 62粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值