改写《魔塔》前篇02:人物行走

       前面一篇中我们绘制了一张简单的地图,包括地板层和墙壁层。但略显单调,因为既没有人物,地图也无法拖动。下面我们就来给地图加上可以行走的勇士。

       我们将案例Resource里面的hero.png图片复制到我们的工程MTGame的Resource目录下。

       然后在上一篇的基础上,修改HelloWorld.cpp的init函数,在解析tmx地图方法下面,即addChild(map);添加如下代码

       

		//将图片生成纹理,保存到全局的纹理缓冲区
		CCTexture2D *heroTexture=CCTextureCache::sharedTextureCache()->addImage("hero.png");
		//创建四个纹理
		CCSpriteFrame *frame0,*frame1,*frame2,*frame3;
        //第二个参数表示显示区域的x, y, width, height	
		frame0=CCSpriteFrame::createWithTexture(heroTexture,CCRectMake(32*0,32*0,32,32));	
		frame1=CCSpriteFrame::createWithTexture(heroTexture,CCRectMake(32*1,32*0,32,32));	
		frame2=CCSpriteFrame::createWithTexture(heroTexture,CCRectMake(32*2,32*0,32,32));	
		frame3=CCSpriteFrame::createWithTexture(heroTexture,CCRectMake(32*3,32*0,32,32));	

		//在2.0版本以后,CCMutableArray取消了
		CCArray* animFrames=new CCArray(4);
        //将创建的四个纹理保存到数组中
		animFrames->addObject(frame0);
		animFrames->addObject(frame1);
		animFrames->addObject(frame2);
		animFrames->addObject(frame3);

		//创建一个动画
		CCAnimation* animation=new CCAnimation();
		//0.2f表示每帧动画间的间隔
		animation->initWithSpriteFrames(animFrames,0.2f);
		animFrames->release();

		//用frame0作为勇士的静态图
		CCSprite* heroSprite=CCSprite::createWithSpriteFrame(frame0);
		//暂时将勇士显示在(100,100)处
		heroSprite->setPosition(ccp(100,100));
		addChild(heroSprite);

		//创建动画
		CCAnimate* animate=CCAnimate::create(animation);
		//让精灵播放定义的动画,就有了行走的效果
		heroSprite->runAction(CCRepeatForever::create(animate));
      运行,效果如下,画面左下角出现了一个勇士在不停地走动。

                     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值