仍然一样 直接在代码 资源 下一个 上传 你可以看到自己NFServerChangeLayer.h

/************************************************************************/

/*服务器切换层 */

/************************************************************************/

class CNFServerChangeLayer : public CCLayer , public CMsgReceiver ,public CMsgSender

{

protected:

//标签

enum

{

enTagScrollLayer = 1,

};

int m_nCurrentServerID;

public:

static CNFServerChangeLayer * CreateLayer(int nCurrentServerID,int nServerTotalNum);//当前服务器ID。服务器总数量

//消息接收

virtual void RecMsg(int nMsgID,void* pInfo,int nSize);

protected:

virtual bool InitLayer(int nCurrentServerID,int nServerTotalNum);

//button回调:返回

void OnBtnCallBack(CCObject * pObj);

//button回调:向左滑动

void OnBtnLeftMove(CCObject * pObj);

//button回调:向右滑动

void OnBtnRightMove(CCObject * pObj);

};

#endif.cpp文件#include "NFServerChangeLayer.h"

#include "NFServerChangeScrollLayer.h"

CNFServerChangeLayer * CNFServerChangeLayer::CreateLayer(int nCurrentServerID,int nServerTotalNum)

{

CNFServerChangeLayer *pRet = new CNFServerChangeLayer();

if (pRet && pRet->InitLayer(nCurrentServerID,nServerTotalNum))

{

pRet->autorelease();

return pRet;

}

CCLog("Fun CNFServerChangeLayer::CreateLayer Error!");

delete pRet;

pRet = NULL;

return NULL;

}

bool CNFServerChangeLayer::InitLayer(int nCurrentServerID,int nServerTotalNum)

{

do

{

//初始化父类

CC_BREAK_IF(CCLayer::init()==false);

m_nCurrentServerID = nCurrentServerID;

/************************************************************************/

/*背景图片                                                                     */

/************************************************************************/

//创建背景

CCSprite * pBg = CCSprite::create("ui/serverselect_bg.png");

CC_BREAK_IF(pBg==NULL);

pBg->setPosition(SCREEN_CENTER);

pBg->setScaleX( (float)CCDirector::sharedDirector()->getWinSize().width/(float)pBg->getContentSize().width );

addChild(pBg,enZOrderBack);

//创建上次登录图片

CCSprite * pBg1 = CCSprite::create("ui/serverselect_title_1.png");

CC_BREAK_IF(pBg1==NULL);

pBg1->setPosition(ccp(150+_NF_SCREEN_WIDTH_DIS_,420));

addChild(pBg1,enZOrderBack);

//创建全服务器图片

CCSprite * pBg2 = CCSprite::create("ui/serverselect_title_2.png");

CC_BREAK_IF(pBg2==NULL);

pBg2->setPosition(ccp(160+_NF_SCREEN_WIDTH_DIS_,300));

addChild(pBg2,enZOrderBack);

/************************************************************************/

/*创建button                                                                     */

/************************************************************************/

CCMenu * pMenu = CCMenu::create();

CC_BREAK_IF(pMenu==NULL);

pMenu->setPosition(CCPointZero);

addChild(pMenu,enZOrderFront);

//创建返回button

//CCMenuItemSprite * pBtnBack = CCMenuItemSprite::create(

//CCSprite::create("ui/serverselect_btn_back_n.png"),

//CCSprite::create("ui/serverselect_btn_back_p.png"),

//this,

//menu_selector(CNFServerChangeLayer::OnBtnCallBack));

//CC_BREAK_IF(pBtnBack==NULL);

//pBtnBack->setPosition(ccp(SCREEN_WIDTH - 30,SCREEN_HEIGHT-30));

//pMenu->addChild(pBtnBack,enZOrderFront);

//创建当前服务器button

CCMenuItemSprite * pBtnCurrentServer = CCMenuItemSprite::create(

CCSprite::create("ui/btn_enter_n.png"),

CCSprite::create("ui/btn_enter_p.png"),

this,

menu_selector(CNFServerChangeLayer::OnBtnCallBack));

CC_BREAK_IF(pBtnCurrentServer==NULL);

pBtnCurrentServer->setPosition(ccp(190+_NF_SCREEN_WIDTH_DIS_,380));

pMenu->addChild(pBtnCurrentServer,enZOrderFront);

//创建左側button

CCMenuItemSprite * pBtnLeft = CCMenuItemSprite::create(

CCSprite::create("ui/serverselect_btn_back_n.png"),

CCSprite::create("ui/serverselect_btn_back_p.png"),

this,

menu_selector(CNFServerChangeLayer::OnBtnLeftMove));

CC_BREAK_IF(pBtnLeft==NULL);

pBtnLeft->setPosition(ccp(50+_NF_SCREEN_WIDTH_DIS_,150));

pMenu->addChild(pBtnLeft,enZOrderFront);

//创建右側button

CCMenuItemSprite * pBtnRight = CCMenuItemSprite::create(

CCSprite::create("ui/serverselect_btn_back_n.png"),

CCSprite::create("ui/serverselect_btn_back_p.png"),

this,

menu_selector(CNFServerChangeLayer::OnBtnRightMove));

CC_BREAK_IF(pBtnRight==NULL);

pBtnRight->setPosition(ccp(SCREEN_WIDTH-_NF_SCREEN_WIDTH_DIS_-50,150));

pMenu->addChild(pBtnRight,enZOrderFront);

/************************************************************************/

/*创建label                                                                     */

/************************************************************************/

CCDictionary *pDicLang = CCDictionary::createWithContentsOfFile("ui_xml/serverselect_xml.xml");

CC_BREAK_IF(pDicLang==NULL);

//服务器名称label

CCString *pStrServerName = dynamic_cast(pDicLang->objectForKey("server_name"));

char szName[NAME_LEN] = {0};

sprintf(szName,pStrServerName->m_sString.c_str(),nCurrentServerID);

CCLabelTTF * pLabelServerName = CCLabelTTF::create(szName,"Arial",20);

CC_BREAK_IF(pLabelServerName==NULL);

pLabelServerName->setPosition(pBtnCurrentServer->getPosition());

addChild(pLabelServerName,enZOrderFront);

/************************************************************************/

/*创建滑动层                                                                     */

/************************************************************************/

//创建滑动层

CNFServerChangeScrollLayer * pLayer = CNFServerChangeScrollLayer::CreateLayer(nServerTotalNum);//Item数组。x轴起始位置

CC_BREAK_IF(pLayer==NULL);

pLayer->SetMsg(this);

addChild(pLayer,enZOrderFront,enTagScrollLayer);

return true;

} while (false);

CCLog("Fun CNFServerChangeLayer::init Error!");

return false;

}

//button回调:返回

void CNFServerChangeLayer::OnBtnCallBack( CCObject * pObj )

{

//发消息:更改服务器

tagServerSelect Info;

Info.nServerID = m_nCurrentServerID;

SendMsg(enMsg_ServerSelect,&Info,sizeof(Info));

//移除自身

removeFromParentAndCleanup(true);

}

//button回调:向左滑动

void CNFServerChangeLayer::OnBtnLeftMove( CCObject * pObj )

{

do

{

//滑动层

CNFServerChangeScrollLayer * pLayer = dynamic_cast(getChildByTag(enTagScrollLayer));

CC_BREAK_IF(pLayer==NULL);

pLayer->SetRightMove();

return ;

} while (false);

CCLog("Fun CNFServerChangeLayer::OnBtnLeftMove Error!");

}

//button回调:向右滑动

void CNFServerChangeLayer::OnBtnRightMove( CCObject * pObj )

{

do

{

//滑动层

CNFServerChangeScrollLayer * pLayer = dynamic_cast(getChildByTag(enTagScrollLayer));

CC_BREAK_IF(pLayer==NULL);

pLayer->SetLeftMove();

return ;

} while (false);

CCLog("Fun CNFServerChangeLayer::OnBtnRightMove Error!");

}

//消息接收

void CNFServerChangeLayer::RecMsg( int nMsgID,void* pInfo,int nSize )

{

switch (nMsgID)

{

case enMsg_ServerSelect:

{

tagServerSelect * pCmd = (tagServerSelect *)pInfo;

//发消息:更改服务器

tagServerSelect Info;

Info.nServerID = pCmd->nServerID;

SendMsg(enMsg_ServerSelect,&Info,sizeof(Info));

//移除自身

removeFromParentAndCleanup(true);

}break;

}

}

NFServerChangeScrollLayer.h 文件/************************************************************************/

/*服务器选择界面,滑动层                                                                     */

/************************************************************************/

class CNFServerChangeScrollLayer : public CCLayerColor ,public CMsgSender

{

protected:

// 标签

enum

{

enTagMenu = 1,

enTagBtn = 100,

};

floatm_fTouchPassPosX;//上一次计算触摸时。手指滑过的位置

floatm_fTouchBeginPosX;//用户触摸最初始的位置

boolm_bTouching;//是否取消了触摸(保证不会反复调用TouchEnd)

boolm_bIsTouchBtn;//是否触摸到button

floatm_fPageWidth;//每一页的宽度

floatm_fEndLayerPos;//结束边界的位置

floatm_fStartNodePosX;//初始节点x轴位置

CCRectm_DisPlayRect;//显示区域

public:

static CNFServerChangeScrollLayer* CreateLayer(int nItemNum);

//向左滑

void SetLeftMove();

//向右滑

void SetRightMove();

protected:

bool InitLayer(int nItemNum);

//设置裁剪区域

void visit();

//触摸函数

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);

//button回调

void OnBtnCallBack(CCObject * pObj);

virtual void onExit();

};

#endif#include "NFServerChangeScrollLayer.h"

#define _ONE_PAGE_SERVER_NUM_12//每一页所拥有的服务器的个数

#define _X_START_POS_78//x轴初始坐标

#define _PAGE_WIDTH_564//页面宽度

#define _PAGE_HEIGHT_285//页面高度

/************************************************************************/

/*滑动层                                                  */

/************************************************************************/

CNFServerChangeScrollLayer* CNFServerChangeScrollLayer::CreateLayer(int nItemNum)

{

CNFServerChangeScrollLayer *pRet = new CNFServerChangeScrollLayer();

if (pRet && pRet->InitLayer(nItemNum))

{

pRet->autorelease();

return pRet;

}

CC_SAFE_DELETE(pRet);

return NULL;

}

bool CNFServerChangeScrollLayer::InitLayer(int nItemNum)

{

do

{

//初始化父类

CC_BREAK_IF(CCLayerColor::initWithColor(ccc4(0,0,0,0))==false);

//独占触屏注冊值小于-128才干屏蔽Menu(Menu默认是-128)

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, -129, true);

//初始x轴坐标

m_fStartNodePosX = _X_START_POS_ + _NF_SCREEN_WIDTH_DIS_;

;//页面数量

int nPageNum = nItemNum%_ONE_PAGE_SERVER_NUM_ > 0 ?

nItemNum/_ONE_PAGE_SERVER_NUM_+1 : nItemNum/_ONE_PAGE_SERVER_NUM_;

//每一页宽度

m_fPageWidth = _PAGE_WIDTH_;

//页面高度

floatfPageHeight = _PAGE_HEIGHT_;

//x轴最小坐标

m_fEndLayerPos = m_fPageWidth*(1-nPageNum);

//x。y轴之间的间隔

float fItemDisX = 11;

float fItemDisY = 20;

/************************************************************************/

/*创建button                                                                     */

/************************************************************************/

CCDictionary *pDicLang = CCDictionary::createWithContentsOfFile("ui_xml/serverselect_xml.xml");

CC_BREAK_IF(pDicLang==NULL);

CCMenu * pMenu = CCMenu::create();

CC_BREAK_IF(pMenu==NULL);

pMenu->setPosition(CCPointZero);

addChild(pMenu,enZOrderFront,enTagMenu);

//创建数组

CCObject *pObj = NULL;

for (int k=1;k<=nItemNum;k++)

{

int i = k%_ONE_PAGE_SERVER_NUM_ > 0 ? k%_ONE_PAGE_SERVER_NUM_ : _ONE_PAGE_SERVER_NUM_;//页面内ITem的ID:1~12

int j = k%_ONE_PAGE_SERVER_NUM_ > 0 ? k/_ONE_PAGE_SERVER_NUM_+1 : k/_ONE_PAGE_SERVER_NUM_;//当前页面ID

int nCrossNum = i%3 == 0 ? 3 : i%3;//横排

int nVerticalNum = i%3 > 0 ? i/3+1 : i/3;//竖排

//创建button

CCMenuItemSprite * pBtn = CCMenuItemSprite::create(

CCSprite::create("ui/btn_enter_n.png"),

CCSprite::create("ui/btn_enter_p.png"),

this,

menu_selector(CNFServerChangeScrollLayer::OnBtnCallBack));

CC_BREAK_IF(pBtn==NULL);

pBtn->setPosition(ccp( fItemDisX+ (nCrossNum-1)*(pBtn->getContentSize().width+fItemDisX) + m_fStartNodePosX + pBtn->getContentSize().width*0.5f + (j-1)*m_fPageWidth , fPageHeight-nVerticalNum*(pBtn->getContentSize().height+fItemDisY) + fItemDisY ));

pMenu->addChild(pBtn,enZOrderFront,enTagBtn+k);

//服务器名称label

CCString *pStrServerName = dynamic_cast(pDicLang->objectForKey("server_name"));

char szName[NAME_LEN] = {0};

sprintf(szName,pStrServerName->m_sString.c_str(),k);

CCLabelTTF * pLabelServerName = CCLabelTTF::create(szName,"Arial",20);

CC_BREAK_IF(pLabelServerName==NULL);

pLabelServerName->setPosition(pBtn->getPosition());

addChild(pLabelServerName,enZOrderFront);

}

//显示区域

m_DisPlayRect = CCRectMake(m_fStartNodePosX ,10 ,m_fPageWidth,fPageHeight);

m_bTouching = false;

m_bIsTouchBtn = false;

return true;

} while (false);

CCLog("Fun CQXPVEItemScrollLayer::initWithNodes Error!");

return false;

}

//触摸:開始

bool CNFServerChangeScrollLayer::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)

{

CCPoint ptTouchPoint =pTouch->getLocation();

//设置初始触摸点

m_fTouchPassPosX = ptTouchPoint.x;

m_fTouchBeginPosX = ptTouchPoint.x;

//推断是否触摸到裁切区域内

if(m_DisPlayRect.containsPoint(ptTouchPoint))

{

m_bTouching = true;

//推断是否触摸到button

CCMenu *pMenu = dynamic_cast(getChildByTag(enTagMenu));

if(pMenu!=NULL)

{

CCArray *pChildren = pMenu->getChildren();

if(pChildren!=NULL)

{

CCObject *pItem=NULL;

CCARRAY_FOREACH(pChildren,pItem)

{

CCMenuItemSprite *pBtn= dynamic_cast(pItem);

if(pBtn!=NULL)

{

CCPoint local = pBtn->convertToNodeSpace(pTouch->getLocation());

CCRect r = pBtn->rect();

r.origin = CCPointZero;

if (r.containsPoint(local))

{

pMenu->ccTouchBegan(pTouch,pEvent);

m_bIsTouchBtn=true;

}

}

}

}

}

return true;

}

return false;

}

//触摸:移动

void CNFServerChangeScrollLayer::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)

{

if(m_bTouching==false)return;

CCPoint ptTouchPoint =pTouch->getLocation();

CCPoint pNewPos=getPosition();

//移动层

pNewPos.x+=ptTouchPoint.x-m_fTouchPassPosX;

this->setPosition(pNewPos);

//重置初始点

m_fTouchPassPosX=ptTouchPoint.x;

//若触摸到button

if (m_bIsTouchBtn==true)

{

CCMenu *pMenu = dynamic_cast(getChildByTag(enTagMenu));

if (pMenu!=NULL)

{

pMenu->ccTouchCancelled(pTouch,pEvent);

m_bIsTouchBtn = false;

}

}

}

//触摸:结束

void CNFServerChangeScrollLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)

{

if(m_bTouching==false)return;

m_bTouching = false;

CCPoint ptTouchPoint =pTouch->getLocation();

CCPoint ptMyPos = getPosition();

//推断移到哪一页

float fDisX = ptTouchPoint.x - m_fTouchBeginPosX;

//判定滑动

if ( _NF_ABS(fDisX)>= 20)

{

//向左滑动

if (fDisX < 0)

{

//若未过界

if (getPositionX() > m_fEndLayerPos)

{

int fLen = (int)getPositionX()%(int)m_fPageWidth;

ptMyPos.x = (int)( getPositionX() - fLen - m_fPageWidth);

CCAction *pMoveTo=CCMoveTo::create(0.3f,ptMyPos);

runAction(pMoveTo);

}

}

//向右滑

if (fDisX > 0)

{

//若未过界

if (getPositionX() < 0)

{

int fLen = (int)getPositionX()%(int)m_fPageWidth;

ptMyPos.x = (int)( getPositionX() - fLen);

CCAction *pMoveTo=CCMoveTo::create(0.3f,ptMyPos);

runAction(pMoveTo);

}

}

}

//推断是否越界

if (getPositionX()>0)

{

ptMyPos.x = 0;

CCAction *pMoveTo=CCMoveTo::create(0.3f,ptMyPos);

runAction(pMoveTo);

}

else if (getPositionX()

{

ptMyPos.x = m_fEndLayerPos<0?m_fEndLayerPos:0;

CCAction *pMoveTo=CCMoveTo::create(0.3f,ptMyPos);

runAction(pMoveTo);

}

//滑动层,当前坐标

CCPoint LayerPos;

LayerPos.x = getPositionX();

LayerPos.y = getPositionY();

//若触摸到button

if (m_bIsTouchBtn==true)

{

CCMenu *pMenu = dynamic_cast(getChildByTag(enTagMenu));

if (pMenu!=NULL)

{

pMenu->ccTouchEnded(pTouch,pEvent);

}

m_bIsTouchBtn = false;

}

}

void CNFServerChangeScrollLayer::ccTouchCancelled( CCTouch *pTouch, CCEvent *pEvent )

{

m_bTouching = false;

}

//裁切

void CNFServerChangeScrollLayer::visit()

{

kmGLPushMatrix();

if (m_pGrid && m_pGrid->isActive())

{

m_pGrid->beforeDraw();

this->transformAncestors();

}

this->transform();

glEnable(GL_SCISSOR_TEST);

CCSize size=CCEGLView::sharedOpenGLView()->getFrameSize();

float fScaleX=size.width/SCREEN_WIDTH;

float fScaleY=size.height/SCREEN_HEIGHT;

glScissor(m_DisPlayRect.origin.x*fScaleX,m_DisPlayRect.origin.y*fScaleY,m_DisPlayRect.size.width*fScaleX,m_DisPlayRect.size.height*fScaleY);

if (m_pChildren)

{

for (unsigned int i=0;idata->num;i++)

{

CCNode* pNode=(CCNode*)m_pChildren->data->arr[i];

if (pNode->getZOrder()<0)

{

pNode->visit();

}

else

{

break;

}

}

draw();

for (unsigned int i=0;idata->num;i++)

{

CCNode* pNode=(CCNode*)m_pChildren->data->arr[i];

pNode->visit();

}

}

else

{

draw();

}

glDisable(GL_SCISSOR_TEST);

if (m_pGrid &&m_pGrid->isActive())

{

m_pGrid->afterDraw(this);

}

kmGLPopMatrix();

}

//button回调

void CNFServerChangeScrollLayer::OnBtnCallBack( CCObject * pObj )

{

do

{

int nTag = (dynamic_cast(pObj))->getTag();

//发消息:更改服务器

tagServerSelect Info;

Info.nServerID = nTag-100;

//发消息,切换服务器

SendMsg(enMsg_ServerSelect,&Info,sizeof(Info));

//移除自身

removeFromParentAndCleanup(true);

return ;

} while (false);

CCLog("Fun CNFServerSelectScrollLayer::OnBtnCallBack Error!");

}

void CNFServerChangeScrollLayer::onExit()

{

//取消独占

CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);

CCLayer::onExit();

}

void CNFServerChangeScrollLayer::SetLeftMove()

{

//若当前未触摸

if (m_bTouching==false)

{

//若未过界

if (getPositionX() > m_fEndLayerPos)

{

CCPoint ptMyPos;

ptMyPos.x = (int)( getPositionX() - m_fPageWidth);

CCAction *pMoveTo=CCMoveTo::create(0.3f,ptMyPos);

runAction(pMoveTo);

}

}

}

void CNFServerChangeScrollLayer::SetRightMove()

{

//若当前未触摸

if (m_bTouching==false)

{

//若未过界

if (getPositionX() < 0)

{

CCPoint ptMyPos;

ptMyPos.x = (int)( getPositionX() + m_fPageWidth);

CCAction *pMoveTo=CCMoveTo::create(0.3f,ptMyPos);

runAction(pMoveTo);

}

}

}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

手机2d横版游戏服务器位置同步,分析Cocos2d-x横版ACT手游源 2、server场景相关推荐

  1. 手机2d横版游戏服务器位置同步,分析Cocos2d-x横版ACT手游源代码 2、服务器场景...

    还是一样 直接上代码 源代码 下一篇 上传 大家可以自己看 NFServerChangeLayer.h /*********************************************** ...

  2. 分析Cocos2d-x横版ACT手游源码 1、公共

    直接上代码 不说什么 这一款源码 凝视及多 PublicDef.h 公共头文件 #define NF_PLATFORM 1 //当前版本号(默觉得普通版)//版本号列表 #define NF_PLAT ...

  3. 分析Cocos2d-x横版ACT手游源 1、登录

    我自己的游戏代码 因为 游戏源 盯着外面的 我们能够能够理解 /******************************************************************** ...

  4. cocos2d中getasynckeystate android,分析Cocos2d-x横版ACT手游源代码 4、场景

    .h文件 #ifndef _CM_GAME_SCENE_H_ #define _CM_GAME_SCENE_H_ #include "../publicdef/PublicDef.h&quo ...

  5. 分析Cocos2d-x横版ACT手游源代码 4、场景

    .h文件 #ifndef _CM_GAME_SCENE_H_ #define _CM_GAME_SCENE_H_#include "../publicdef/PublicDef.h" ...

  6. 游戏服务器 数据同步方案

    游戏数据同步方案 首先我们介绍实时对战手游中最难解决的技术问题--弱网络下的数据同步问题. 通过对玩家的游戏数据进行观察,发现玩家的游戏环境存在很大差异,不同玩家会使用不同的2G/3G/4G/Wifi ...

  7. 如何查询游戏的服务器位置,怎么查看游戏服务器位置

    怎么查看游戏服务器位置 内容精选 换一换 本章节介绍如何通过控制台查看云手机实例的详细信息.登录管理控制台.在管理控制台左上角,选择待查看云手机所在的区域.在服务列表页,选择"计算 > ...

  8. 游戏服务器框架概括分析

    游戏服务器框架概括分析 关注公众号 风色年代(itfantasycc) 500G游戏开发资料随便拿! 这篇blog题目涉及的范围真大!以至于在这里需要先写一篇前言把范围缩小.选择写这样一个系列的文章, ...

  9. 正版鬼泣手游服务器,爆款频出!永劫无间+鬼泣正版手游,国内掀起硬核游戏风潮...

    如果说,2020年<原神>成为炙手可热的现象级游戏,让二次元成为席卷全球的"财富密码"的话,那么2021年开始,各类硬核游戏的出色表现,则在国内掀起硬核风潮,猛男游戏登 ...

最新文章

  1. hdu2008——数值统计
  2. jq 切换功能toggle
  3. Swipe JS – 移动WEB页面内容触摸滑动类库
  4. chapter14 机器学习之利用SVD简化数据
  5. C语言对stm32f103程序,STM32F103WIFI程序C语言
  6. 这个顶级AI赛事总奖池100W+!CV 、NLP赛题等你来战!
  7. python numpy数组画图_python – Numpy和Pyplot的条件绘图
  8. mysql怎么同时输入多个值_mysql – 一个字段搜索多个值
  9. php cmd 命令行参数,php获取命令行参数
  10. 杜拉拉升职记摘录:早日实现退休理想--你需要眼光和资格
  11. WPF_在APP.xaml应用资源样式
  12. flashfxp3.41中文版注册码:(适合最新版本)
  13. Linux 下搭建web压力测试工具web polygraph
  14. python绘制正多边形_python : turtle 画正多边形
  15. iPad如何分屏?iPad分屏详细教程来啦!
  16. 小红书的大致运营思路是怎样的?
  17. 写出语句的四元式序列
  18. python编程读写文件内容_Python编程中对文件和存储器的读写示例
  19. python怎么写rpg游戏_python实现的简单RPG游戏流程实例
  20. 基于大数据的数据仓库

热门文章

  1. 创客小制作(含源代码)《RFID控制器》,用于智能门禁、物流追踪、控制开关等,基于Arduino
  2. 鼠标烟雾拖尾(含代码)
  3. FME对Autodesk AutoCAD Civil 3D的支持
  4. CVPR论文解读 | 弱监督的高保真服饰模特生成
  5. 【Fluent】接着上一次计算的结果继续计算,利用计算过程中得到的物理场(温度、速度、压力等)插值Interpolate文件初始化模型的方法
  6. vivo手机助手强势来袭!
  7. 打印机驱动无法安装故障一例
  8. 010 - 微信小程序开发之大转盘 仿天猫超市抽奖
  9. 西门子s7300各种存储区的作用区别
  10. 有限元FEM求解一维电磁场问题 Rits法 Galerkin法