Learning Cocos2d-x for WP8(7)——让Sprite动起来

C#(wp7)兄弟篇Learning Cocos2d-x for XNA(7)——让Sprite动起来

本讲将详细介绍Cocos2d-x游戏中动画Animate的创建方式,通过逐帧数组播放动画和创建动画集合播放动画,比较两者的异同,让Sprite动起来。

工程文件:SpriteAnimationTest.hSpriteAnimationTest.cpp

SpriteAnimationTest.h

添加两类预处理SpriteAnimateFrameScene和SpriteAnimateFrameLayer

核心代码

SpriteAnimationTest.h
 1 #ifndef _SPRITE_ANIMATION_TEST_
 2 #define _SPRITE_ANIMATION_TEST_
 3 
 4 #include "cocos2d.h"
 5 
 6 using namespace cocos2d;
 7 
 8 class SpriteAnimateFrameScene:public CCScene
 9 {
10 public:
11     SpriteAnimateFrameScene();
12     ~SpriteAnimateFrameScene();
13 
14     virtual void onEnter();
15 };
16 
17 class SpriteAnimateFrameLayer:public CCLayer
18 {
19 public:
20     SpriteAnimateFrameLayer();
21     ~SpriteAnimateFrameLayer();
22 };
23 
24 #endif //_SPRITE_ANIMATION_TEST_

通过逐帧数组播放动画,CCSpriteFrame的使用

动画是通过逐帧连续播放图像而形成的动作画面。

既然是逐帧动画,细化话后,即是单帧,通过记录单帧信息,然后再将单帧连续起来,即是逐帧动画。

添加素材文件到Assets/Sprite中,named为PlayerRun.png

在SpriteAnimateFrameLayer::SpriteAnimateFrameLayer()中完成如下步骤:

1.读取素材文件

CCTexture2D* texture=CCTextureCache::sharedTextureCache()->addImage("Sprite/PlayerRun.png");

2.记录单帧信息

 1     CCSpriteFrame* frame0=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*0,0,140,140));
 2     CCSpriteFrame* frame1=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*1,0,140,140));
 3     CCSpriteFrame* frame2=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*2,0,140,140));
 4     CCSpriteFrame* frame3=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*3,0,140,140));
 5     CCSpriteFrame* frame4=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*4,0,140,140));
 6     CCSpriteFrame* frame5=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*5,0,140,140));
 7     CCSpriteFrame* frame6=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*6,0,140,140));
 8     CCSpriteFrame* frame7=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*7,0,140,140));
 9     CCSpriteFrame* frame8=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*8,0,140,140));
10     CCSpriteFrame* frame9=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*9,0,140,140));
11     CCSpriteFrame* frame10=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*10,0,140,140));
12     CCSpriteFrame* frame11=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*11,0,140,140));

3.设置起始帧

1     CCSprite* sprite=CCSprite::spriteWithSpriteFrame(frame1);
2     sprite->setPosition(ccp(s.width/2,s.height/2));
3     this->addChild(sprite,1);

4.生成逐帧数组

 1     CCMutableArray<CCSpriteFrame*>* animFrames=new CCMutableArray<CCSpriteFrame*>(12);
 2     animFrames->addObject(frame0);
 3     animFrames->addObject(frame1);
 4     animFrames->addObject(frame2);
 5     animFrames->addObject(frame3);
 6     animFrames->addObject(frame4);
 7     animFrames->addObject(frame5);
 8     animFrames->addObject(frame6);
 9     animFrames->addObject(frame7);
10     animFrames->addObject(frame8);
11     animFrames->addObject(frame9);
12     animFrames->addObject(frame10);
13     animFrames->addObject(frame11);

5.执行动画

1     CCAnimation* animation=CCAnimation::animationWithFrames(animFrames,0.1f);//Animation动画信息
2     animFrames->release();
3     CCAnimate* animate=CCAnimate::actionWithAnimation(animation,false);
4     CCActionInterval* seq=(CCActionInterval*)(CCSequence::actions(animate,NULL));//动画间隔
5     sprite->runAction(CCRepeatForever::actionWithAction(animate));    

创建动画帧集合,CCSpriteBatchNode使用

对于通过逐帧数组播放动画,同样可以通过CCSpriteBatchNode实现。

动画帧集合即是导入贴图文件.png和导入贴图文件的配置文件.plist

前面都是通过一张图片或图片的部分创建精灵并将其加入到场景中,这样导致的结果是每次添加精灵时,都要逐个渲染精灵,性能低下,一旦过多精灵渲染,将会影响效率。

精灵批处理

使用CCSpriteBatchNode来批处理这些精灵就可以避免帧率的下降。

创建CCSpriteBatchNode的方法

        static CCSpriteBatchNode* batchNodeWithTexture(CCTexture2D *tex);static CCSpriteBatchNode* batchNodeWithTexture(CCTexture2D* tex, unsigned int capacity);static CCSpriteBatchNode* batchNodeWithFile(const char* fileImage);static CCSpriteBatchNode* batchNodeWithFile(const char* fileImage, unsigned int capacity);

其中capacity是子节点的数量,当然,不显式设置子节点的数量的话,系统会使用默认值29,在运行时如果超过空间了,会增加33%的容量。

CCSpriteBatchNode有一个限制,就是所使用的图片必须来自同一个文件,如果使用一张图片来创建精灵,你将不能指定精灵的深度,这样,所有的精灵都必须在同一渲染层,不过你可以使用贴图集来避免这个问题,如果你的所有贴图都在同一个文件里,那么你只需创建一个CCSpriteBatchNode就可以了。贴图的大小必须满足2的n次方。

将素材文件png和plist文件添加到Sprite/Plist/中

RoleRun.plist代码

RoleRun.plist
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 <plist version="1.0">
  4     <dict>
  5         <key>frames</key>
  6         <dict>
  7             <key>RoleRun0.png</key>
  8             <dict>
  9                 <key>frame</key>
 10                 <string>{{0,0},{100,124}}</string>
 11                 <key>offset</key>
 12                 <string>{-4,-7}</string>
 13                 <key>rotated</key>
 14                 <false/>
 15                 <key>sourceColorRect</key>
 16                 <string>{{16,15},{100,124}}</string>
 17                 <key>sourceSize</key>
 18                 <string>{140,140}</string>
 19             </dict>
 20             <key>RoleRun1.png</key>
 21             <dict>
 22                 <key>frame</key>
 23                 <string>{{100,0},{92,118}}</string>
 24                 <key>offset</key>
 25                 <string>{1,-3}</string>
 26                 <key>rotated</key>
 27                 <false/>
 28                 <key>sourceColorRect</key>
 29                 <string>{{25,14},{92,118}}</string>
 30                 <key>sourceSize</key>
 31                 <string>{140,140}</string>
 32             </dict>
 33             <key>RoleRun2.png</key>
 34             <dict>
 35                 <key>frame</key>
 36                 <string>{{192,0},{104,112}}</string>
 37                 <key>offset</key>
 38                 <string>{1,-1}</string>
 39                 <key>rotated</key>
 40                 <false/>
 41                 <key>sourceColorRect</key>
 42                 <string>{{19,15},{104,112}}</string>
 43                 <key>sourceSize</key>
 44                 <string>{140,140}</string>
 45             </dict>
 46             <key>RoleRun3.png</key>
 47             <dict>
 48                 <key>frame</key>
 49                 <string>{{296,0},{110,114}}</string>
 50                 <key>offset</key>
 51                 <string>{-2,-2}</string>
 52                 <key>rotated</key>
 53                 <false/>
 54                 <key>sourceColorRect</key>
 55                 <string>{{13,15},{110,114}}</string>
 56                 <key>sourceSize</key>
 57                 <string>{140,140}</string>
 58             </dict>
 59             <key>RoleRun4.png</key>
 60             <dict>
 61                 <key>frame</key>
 62                 <string>{{406,0},{112,118}}</string>
 63                 <key>offset</key>
 64                 <string>{-6,-5}</string>
 65                 <key>rotated</key>
 66                 <false/>
 67                 <key>sourceColorRect</key>
 68                 <string>{{8,16},{112,118}}</string>
 69                 <key>sourceSize</key>
 70                 <string>{140,140}</string>
 71             </dict>
 72             <key>RoleRun5.png</key>
 73             <dict>
 74                 <key>frame</key>
 75                 <string>{{518,0},{98,118}}</string>
 76                 <key>offset</key>
 77                 <string>{-7,-6}</string>
 78                 <key>rotated</key>
 79                 <false/>
 80                 <key>sourceColorRect</key>
 81                 <string>{{14,17},{98,118}}</string>
 82                 <key>sourceSize</key>
 83                 <string>{140,140}</string>
 84             </dict>
 85             <key>RoleRun6.png</key>
 86             <dict>
 87                 <key>frame</key>
 88                 <string>{{616,0},{102,122}}</string>
 89                 <key>offset</key>
 90                 <string>{-3,-5}</string>
 91                 <key>rotated</key>
 92                 <false/>
 93                 <key>sourceColorRect</key>
 94                 <string>{{16,14},{102,122}}</string>
 95                 <key>sourceSize</key>
 96                 <string>{140,140}</string>
 97             </dict>
 98             <key>RoleRun7.png</key>
 99             <dict>
100                 <key>frame</key>
101                 <string>{{718,0},{96,118}}</string>
102                 <key>offset</key>
103                 <string>{2,-1}</string>
104                 <key>rotated</key>
105                 <false/>
106                 <key>sourceColorRect</key>
107                 <string>{{24,12},{96,118}}</string>
108                 <key>sourceSize</key>
109                 <string>{140,140}</string>
110             </dict>
111             <key>RoleRun8.png</key>
112             <dict>
113                 <key>frame</key>
114                 <string>{{814,0},{96,118}}</string>
115                 <key>offset</key>
116                 <string>{0,-1}</string>
117                 <key>rotated</key>
118                 <false/>
119                 <key>sourceColorRect</key>
120                 <string>{{22,12},{96,118}}</string>
121                 <key>sourceSize</key>
122                 <string>{140,140}</string>
123             </dict>
124             <key>RoleRun9.png</key>
125             <dict>
126                 <key>frame</key>
127                 <string>{{910,0},{100,118}}</string>
128                 <key>offset</key>
129                 <string>{-2,-2}</string>
130                 <key>rotated</key>
131                 <false/>
132                 <key>sourceColorRect</key>
133                 <string>{{18,13},{100,118}}</string>
134                 <key>sourceSize</key>
135                 <string>{140,140}</string>
136             </dict>
137         </dict>
138         <key>metadata</key>
139         <dict>
140             <key>format</key>
141             <integer>2</integer>
142             <key>realTextureFileName</key>
143             <string>RoleRun.png</string>
144             <key>size</key>
145             <string>{2048,128}</string>
146             <key>smartupdate</key>
147             <string>$TexturePacker:SmartUpdate:43e6d77d8691aadfa1c598803e171096$</string>
148             <key>textureFileName</key>
149             <string>RoleRun.png</string>
150         </dict>
151     </dict>
152 </plist>

RoleRun.png图

1.创建批处理节点,读取plist文件

    //创建批处理节点,读取plist文件CCSpriteFrameCache* cache=CCSpriteFrameCache::sharedSpriteFrameCache();cache->addSpriteFramesWithFile("Sprite/Plist/RoleRun.plist","Sprite/Plist/RoleRun.png");

2. 起始精灵

1     CCSprite* sprite1=CCSprite::spriteWithSpriteFrameName("RoleRun0.png");//纹理plist中包含RoleRun0.png
2     sprite1->setPosition(ccp(s.width/2,s.height/4));    
3     
4     CCSpriteBatchNode* spritebatch = CCSpriteBatchNode::batchNodeWithFile("Sprite/Plist/RoleRun.png");//与CCSpriteFrameCache同一纹理
5     spritebatch->addChild(sprite1);
6     addChild(spritebatch);

其中" RoleRun0.png "为plist文件中的节点纹理

3.创建逐帧数组

1     //创建逐帧数组
2     CCMutableArray<CCSpriteFrame*>* animFrames1=new CCMutableArray<CCSpriteFrame*>(10);
3     char str1[100]={0};
4     for(int i=0;i<10;i++)
5     {
6         sprintf(str1,"RoleRun%d.png",i);
7         CCSpriteFrame* pFrame=cache->spriteFrameByName( str1 );
8         animFrames1->addObject(pFrame);
9     }

4.执行动画

1     CCAnimation* animation1=CCAnimation::animationWithFrames(animFrames1,0.2);
2     sprite1->runAction(CCRepeatForever::actionWithAction(CCAnimate::actionWithAnimation(animation1,false)));

这样同样可以实现同样的效果

运行效果,两个Sprite都能动起来

SpriteAnimationTest.h完整代码

SpriteAnimationTest.h
 1 #ifndef _SPRITE_ANIMATION_TEST_
 2 #define _SPRITE_ANIMATION_TEST_
 3 
 4 #include "cocos2d.h"
 5 
 6 using namespace cocos2d;
 7 
 8 class SpriteAnimateFrameScene:public CCScene
 9 {
10 public:
11     SpriteAnimateFrameScene();
12     ~SpriteAnimateFrameScene();
13 
14     virtual void onEnter();
15 };
16 
17 class SpriteAnimateFrameLayer:public CCLayer
18 {
19 public:
20     SpriteAnimateFrameLayer();
21     ~SpriteAnimateFrameLayer();
22 };
23 
24 #endif //_SPRITE_ANIMATION_TEST_

SpriteAnimationTest.cpp完整代码

SpriteAnimationTest.cpp
  1 #include "pch.h"
  2 #include "Classes\SpriteAnimationTest.h"
  3 
  4 //www.cnblogs.com/suguoqiang
  5 //---------------------------------------
  6 //
  7 //SpriteAnimateFrameLayer
  8 //
  9 //---------------------------------------
 10 
 11 SpriteAnimateFrameLayer::SpriteAnimateFrameLayer()
 12 {
 13     CCSize s=CCDirector::sharedDirector()->getWinSize();
 14     //CCSpriteFrame
 15     //读取素材文件
 16     CCTexture2D* texture=CCTextureCache::sharedTextureCache()->addImage("Sprite/PlayerRun.png");
 17     //记录单帧信息
 18     CCSpriteFrame* frame0=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*0,0,140,140));
 19     CCSpriteFrame* frame1=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*1,0,140,140));
 20     CCSpriteFrame* frame2=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*2,0,140,140));
 21     CCSpriteFrame* frame3=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*3,0,140,140));
 22     CCSpriteFrame* frame4=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*4,0,140,140));
 23     CCSpriteFrame* frame5=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*5,0,140,140));
 24     CCSpriteFrame* frame6=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*6,0,140,140));
 25     CCSpriteFrame* frame7=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*7,0,140,140));
 26     CCSpriteFrame* frame8=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*8,0,140,140));
 27     CCSpriteFrame* frame9=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*9,0,140,140));
 28     CCSpriteFrame* frame10=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*10,0,140,140));
 29     CCSpriteFrame* frame11=CCSpriteFrame::frameWithTexture(texture,CCRectMake(140*11,0,140,140));
 30     // 起始帧
 31     CCSprite* sprite=CCSprite::spriteWithSpriteFrame(frame1);
 32     sprite->setPosition(ccp(s.width/2,s.height/2));
 33     this->addChild(sprite,1);
 34     //生成逐帧数组
 35     CCMutableArray<CCSpriteFrame*>* animFrames=new CCMutableArray<CCSpriteFrame*>(12);
 36     animFrames->addObject(frame0);
 37     animFrames->addObject(frame1);
 38     animFrames->addObject(frame2);
 39     animFrames->addObject(frame3);
 40     animFrames->addObject(frame4);
 41     animFrames->addObject(frame5);
 42     animFrames->addObject(frame6);
 43     animFrames->addObject(frame7);
 44     animFrames->addObject(frame8);
 45     animFrames->addObject(frame9);
 46     animFrames->addObject(frame10);
 47     animFrames->addObject(frame11);
 48     //动画Animate
 49     CCAnimation* animation=CCAnimation::animationWithFrames(animFrames,0.1f);//Animation动画信息
 50     animFrames->release();
 51     CCAnimate* animate=CCAnimate::actionWithAnimation(animation,false);
 52     CCActionInterval* seq=(CCActionInterval*)(CCSequence::actions(animate,NULL));//动画间隔
 53     sprite->runAction(CCRepeatForever::actionWithAction(animate));    
 54     
 55     //CCSpriteBatchNode
 56     //创建批处理节点,读取plist文件
 57     CCSpriteFrameCache* cache=CCSpriteFrameCache::sharedSpriteFrameCache();
 58     cache->addSpriteFramesWithFile("Sprite/Plist/RoleRun.plist","Sprite/Plist/RoleRun.png");
 59 
 60     //起始精灵
 61     CCSprite* sprite1=CCSprite::spriteWithSpriteFrameName("RoleRun0.png");//纹理plist中包含RoleRun0.png
 62     sprite1->setPosition(ccp(s.width/2,s.height/4));    
 63     
 64     CCSpriteBatchNode* spritebatch = CCSpriteBatchNode::batchNodeWithFile("Sprite/Plist/RoleRun.png");//与CCSpriteFrameCache同一纹理
 65     spritebatch->addChild(sprite1);
 66     addChild(spritebatch);
 67 
 68     //创建逐帧数组
 69     CCMutableArray<CCSpriteFrame*>* animFrames1=new CCMutableArray<CCSpriteFrame*>(10);
 70     char str1[100]={0};
 71     for(int i=0;i<10;i++)
 72     {
 73         sprintf(str1,"RoleRun%d.png",i);
 74         CCSpriteFrame* pFrame=cache->spriteFrameByName( str1 );
 75         animFrames1->addObject(pFrame);
 76     }
 77 
 78     CCAnimation* animation1=CCAnimation::animationWithFrames(animFrames1,0.2);
 79     sprite1->runAction(CCRepeatForever::actionWithAction(CCAnimate::actionWithAnimation(animation1,false)));
 80 
 81     animFrames->release();
 82     animFrames1->release();
 83 }
 84 
 85 SpriteAnimateFrameLayer::~SpriteAnimateFrameLayer()
 86 {}
 87 
 88 //---------------------------------------
 89 //
 90 //SpriteAnimateFrameScene
 91 //
 92 //---------------------------------------
 93 
 94 SpriteAnimateFrameScene::SpriteAnimateFrameScene()
 95 {}
 96 
 97 SpriteAnimateFrameScene::~SpriteAnimateFrameScene()
 98 {}
 99 
100 void SpriteAnimateFrameScene::onEnter()
101 {
102     CCScene::onEnter();
103     CCLayer* pLayer=new SpriteAnimateFrameLayer();
104     this->addChild(pLayer);
105     pLayer->release();
106 }
107 
108 //www.cnblogs.com/suguoqiang

 

著作权声明:本文由http://www.cnblogs.com/suguoqiang 原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

转载于:https://www.cnblogs.com/suguoqiang/archive/2013/04/03/2997316.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GWT的渐进式Web应用程序配方

渐进或不渐进… 如果您一段时间以来一直在设计或开发Web应用程序&#xff0c;那么您可能会遇到无数次“渐进式Web应用程序”一词&#xff0c;并且在未来几年内可能会这样做。 您可能想知道PWA的确切定义是什么&#xff0c;如何识别PWA&#xff0c;以及如何构建PWA。 根据字典&a…

问题 1047: [编程入门]报数问题

题目描述有n人围成一圈&#xff0c;顺序排号。从第1个人开始报数&#xff08;从1到3报数&#xff09;&#xff0c;凡报到3的人退出圈子&#xff0c;问最后留下的是原来的第几号的那位。输入初始人数n输出最后一人的初始编号样例输入3 样例输出2分析&#xff1a;因为每次报3都会…

NOIP模拟测试17「入阵曲·将军令·星空」

入阵曲 题解 应用了一种美妙移项思想&#xff0c; 我们先考虑在一维上的做法 维护前缀和$(sum[r]-sum[l-1])\%k0$可以转化为 $sum[r]\% ksum[l-1]\%k$开个桶维护一下即可 然后拓展到二维上 把两行之间所有行拍扁看作一维上的区间&#xff0c; 我们枚举两行和行之间所有列开个桶…

理解sizeof

1、sizeof返回的是字节个数&#xff0c;内存编址的最小单元是字节。因此&#xff0c;空对象&#xff0c;bool值占用的内存也是一个字节。 2、可以对哪些东西求sizeof ? a、对象和类型。如int a; sizeof(a)&#xff0c; sizeof(int)&#xff0c;二者是等价的。同一类型的对象&a…

java 分析java死锁_Java死锁示例–如何分析死锁情况

java 分析java死锁死锁是两个线程或多个线程永远被阻塞的编程情况&#xff0c;这种情况发生在至少两个线程和两个或更多资源的情况下。 在这里&#xff0c;我编写了一个简单的程序&#xff0c;它将导致死锁情况&#xff0c;然后我们将看到如何对其进行分析。 Java死锁示例 pac…

insert 多条数据 并且具有唯一标识符

DECLARE COUNT INT DECLARE NAME NVARCHAR(10) SET COUNT0 WHILE COUNT<1000 BEGIN SET NAMESYSTEMCAST(COUNT AS NVARCHAR(10)) INSERT INTO dbo.users VALUES (NEWID(),NAME,123123COUNT,DATEADD(DAY,COUNT,2012-12-12),GETDATE()) SET COUNT COUNT 1 END 转载于:http…

Java Message System简介

Java消息系统 在本文中&#xff0c;我将讨论面向消息的中间件 &#xff08;MOM&#xff09;以及JMS如何在Enterprise Java中实现它。 另外&#xff0c;我将讨论适合JMS使用的典型用例以及用于讨论消息传递解决方案的不同术语&#xff0c;例如Publisher / Sender &#xff0c; D…

FLV协议5分钟入门浅析

FLV协议简介 FLV&#xff08;Flash Video&#xff09;是一种流媒体格式&#xff0c;因其体积小、协议相对简单&#xff0c;很快便流行开来&#xff0c;并得到广泛的支持。 常见的HTTP-FLV直播协议&#xff0c;就是使用HTTP流式传输通过FLV封装的音视频数据。对想要了解HTTP-FLV…

问题 1049: [编程入门]结构体之时间设计

题目描述定义一个结构体变量&#xff08;包括年、月、日&#xff09;。计算该日在本年中是第几天&#xff0c;注意闰年问题。输入年月日输出当年第几天样例输入2000 12 31 样例输出366 import java.util.Scanner; public class Main{ public static void main(String args[]){ …

反序列化 jackson_使用Jackson和Super类型令牌的Json反序列化

反序列化 jacksonDatatables是一个jquery插件&#xff0c;用于显示表格信息–它可以增强简单的表或可以使用基于AJAX的数据并以表格形式显示信息。 数据表要​​求来自服务器的数据遵循特定的JSON格式才能在屏幕上显示。 考虑要显示Member实体列表的情况&#xff0c;那么Membe…

NOIP模拟测试18「引子·可爱宝贝精灵·相互再归的鹅妈妈」

待补 引子 题解 大模拟&#xff0c;注意细节 代码1 #include<bits/stdc.h> using namespace std; int n,m;char a[1005][1005];bool vst[1005][1005]; void solve(int na,int nb) {int ina,jnb,now0;while(1){j;if(a[na][j])break;}while(1){i;if(a[i][nb])break;}for(in…

GC解释:收集器概述

当前版本的HotSpot JVM包括三种类型的垃圾收集器&#xff1a; –串行收集器 –并行收集器 –多数同时收集者 它们都是世代的&#xff0c;这意味着它们利用了堆的划分方式 。 垃圾收集器负责三个主要操作&#xff1a; –查找不再使用的对象 –释放这些对象之后的内存 –…

数据结构之排序五:选择排序

def selectedSort(myList):#获取list的长度length len(myList)#一共进行多少轮比较for i in range(0,length-1):#默认设置最小值得index为当前值smallest i#用当先最小index的值分别与后面的值进行比较,以便获取最小indexfor j in range(i1,length):#如果找到比当前值小的ind…

C#代码规范

1. 引言 本文是一套面向C# programmer 和C# developer 进行开发所应遵循的开发规范。 按照此规范来开发C#程序可带来以下益处&#xff1a; 代码的编写保持一致性&#xff0c; 提高代码的可读性和可维护性&#xff0c; 在团队开发一个项目的情况下&a…

谷歌guava_使用Google Guava进行馆藏创建和不变性

谷歌guava因此&#xff0c;我想看看番石榴提供的一些集合创建模式&#xff0c;以及它提供的某些不可变集合类型。 如果您没有看过我以前的文章&#xff0c;则可能要从这里开始&#xff1a; 番石榴第1部分– MultiMaps 番石榴第2部分– BiMaps 番石榴第3部分–多组 Guava的…

问题 1051: [编程入门]结构体之成绩统计2

题目描述有N个学生&#xff0c;每个学生的数据包括学号、姓名、3门课的成绩&#xff0c;从键盘输入N个学生的数据&#xff0c;要求打印出3门课的总平均成绩&#xff0c;以及最高分的学生的数据&#xff08;包括学号、姓名、3门课成绩&#xff09;输入学生数量N占一行每个学生的…

socket-02

# -- coding: utf-8 --_author__ "HuaQiang Yan" import socketdef handle_request(client):buf client.recv(1024) # 接收请求client.send(bytes("HTTP/1.1 200 OK\r\n\r\n", encodingutf-8))client.send(bytes("Hello World&#xff01;", …

jenkins复制作业_Jenkins分层作业和作业状态汇总

jenkins复制作业您可能知道&#xff0c;Jenkins是高度可配置的CI服务器。 我们可以设置不同的自定义构建过程。 我将分享一些我用来设置詹金斯工作层次的方法。 这是用例&#xff1a; 我们有一个主要的入口工作被调用以启动整个构建过程。 这项工作可以有一个到多个子工作。 …

xaml语言建立首个win8 Metro应用,rss阅读器

本实例是来源msdn的Metro开发文档&#xff0c;按着解说一步步来理解的&#xff0c;修改了一点点&#xff0c;拿了博客园本人的博客作为RSS阅读&#xff0c;本实例用来学习还是可以的 参考文档http://msdn.microsoft.com/zh-cn/library/windows/apps/br211380.aspx#Y909 先看允…

在扩展Spock时输出给定值

Spock是一个Java测试框架&#xff0c;由GradleWare的软件工程师Peter Niederwieser于2008年创建&#xff0c;它可以促进BDD的发展。 利用这个 例如 &#xff0c;一个故事可以定义为&#xff1a; Story: Returns go to stockAs a store owner In order to keep track of stock…