【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图

本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/cocos2d-html5/1528.html

          ? 点击订阅 ? 本博客最新动态!及时将最新博文通知您!

                 

Cocos2dx html5开发,对于用过2d Or -x的童鞋来说非常easy,Himi这里也没有必要去再跟同学们具体的教学一遍。

所以Himi简单做了一个项目,供给大家參考,源代码下载地址及GIF截图在文章最后!

强调一点:执行 cocos2dx-html5项目,大家能够本地安装webserver, apache 等,将项目公布在webserver上就可以。或者直接使用火狐浏览器进行调试,火狐浏览器是没有限制的。

演示样例项目执行截图:

源代码下载地址(含执行后的GIF图):  http://vdisk.weibo.com/s/yZxRoLm4SHuv0

最后直接贴上源代码,方便懒得去下载的童鞋们直接CV~

var CircleSprite = cc.Sprite.extend({
    _degree:0,
    ctor:function () {
        this._super();
    },
    draw:function () {
        cc.drawingUtil.setDrawColor4B(0,0,0,255);

        if (this._degree < 0)
            this._degree = 360;
		cc.drawingUtil.setLineWidth(2);
        cc.drawingUtil.drawCircle(cc.PointZero(), 30, cc.DEGREES_TO_RADIANS(this._degree), 60, true);
    },
    myUpdate:function (dt) {
        this._degree -= 6;
    }
});

var HpRectSprite = cc.Sprite.extend({
	_rectWidth:0,
	_rectHeigth:0,
	_x:0,
	_y:0,
	_hp:0,
	_maxHp:0,

    ctor:function () {
        this._super();
    },
    draw:function () {
	    cc.drawingUtil.setDrawColor4B(0,0,0,255);
	    cc.drawingUtil.setLineWidth(2);
	    var vertices = [cc.p(this._x, this._y),
		cc.p(this._x+this._rectWidth, this._y),
		cc.p(this._x+this._rectWidth, this._y-this._rectHeigth),
		cc.p(this._x, this._y-this._rectHeigth)];
	    cc.drawingUtil.drawPoly(vertices, 4, true);

	    cc.drawingUtil.setDrawColor4B(255,0,0,255);
	    cc.drawingUtil.setLineWidth(7);
		var rate = this._hp/this._maxHp;
	    cc.drawingUtil.drawLine(cc.p(this._x+1, this._y-4), cc.p(this._x+this._rectWidth*rate,this._y-4));
    },
});

var gameLayer = cc.Layer.extend({
	//game state
	gameState:0,//0:map   , 1:home(母港)  , 2.

	//pointer count
	pointer_count:10,
    //pointers (left to right , up to  down)
	pointArray:[[],[],[],[],[],[],[],[],[],[]],
	//pointer tower name collitision
	pointStrCollisitionArray:[[],[],[],[],[],[],[],[],[],[]],
	//pointer tower name
	pointStrArray:[],
	//tower property
	towerProperArray:[[],[],[],[],[],[],[],[],[],[]],
	//pet property
	petProperArray:[],

	//random count
	randomCount:0,

	//tower time
	towerTime:[],

	enumTag:{
		tag_pointer:0,
		tag_map:100,
		tag_shop:101,
		tag_home:102,
		tag_bgJumpContent:103,
		tag_bgCloseX:104,
		tag_towerProperPeople:105,
		tag_towerProperDef:106,
		tag_towerProperAttCount:107,
		tag_towerProperPeopleC:108,
		tag_towerProperDefC:109,
		tag_towerProperAttCountC:110,
		tag_towerProperLine:111,
		tag_contentAllPetHpName:112,
		tag_contentIntoTower:113,
		tag_contentAdd:130,
	},
	//select tower index
	selectTowerIndex:-1,
	//select tower isSHow
	selectContentIsShow:false,

    init:function () {
        var selfPointer = this;
        this._super();

		this.schedule(this.logicUpdate, 1 / 60);
		var size = cc.Director.getInstance().getWinSize();

		this.pointArray=
		[[size.width*0.1,size.height*0.6],[size.width*0.23,size.height*0.6],[size.width*0.33,size.height*0.25],
		[size.width*0.46,size.height*0.64],[size.width*0.5,size.height*0.58],[size.width*0.53,size.height*0.45],
		[size.width*0.7,size.height*0.6],[size.width*0.8,size.height*0.42],[size.width*0.897,size.height*0.5],
		[size.width*0.915,size.height*0.175]];

		this.pointStrArray=["翡冷翠","牛曰","里曰热内裤","狼蛋","篱笆","开锣","摸死客","向肛","洞精","稀泥"];
		this.towerProperArray=[[1000000,1000000,1000],[5000000,5000000,5000],[20000000,20000000,20000],[5000000,5000000,5000],[5000000,5000000,5000],[20000000,20000000,20000],[1000000,1000000,1000],[100000000,100000000,100000],[1000000,1000000,1000],[20000000,20000000,20000]];
		this.towerTime=["01:10:60","01:10:60","01:10:60","01:10:60","01:10:60","01:10:60","01:10:60","01:10:60","01:10:60","01:10:60"];

		//name,hp,maxhp
		this.petProperArray=[["皮卡丘",10,100],["小皮卡",30,100],["宠物猫咪",50,100],["清晨大怪兽",70,100],["哇哈哈怪兽",90,100],["pet name",100,100]];

        //map bg
        sprite = cc.Sprite.create(r_worldBG);
        sprite.setPosition(cc.p(sprite.getContentSize().width*0.5, size.height- sprite.getContentSize().height*0.5));
        sprite.setScale(0.5);
        sprite.setRotation(180);
        this.addChild(sprite,0,this.enumTag.tag_map);
        var rotateToA = cc.RotateTo.create(0.1, 0);
        var scaleToA = cc.ScaleTo.create(0.1, 1, 1);
        sprite.runAction(cc.Sequence.create(rotateToA, scaleToA));

        //circle
        var circle = new CircleSprite();
        circle.setPosition(cc.p(40, size.height - 60));
        this.addChild(circle);
        circle.schedule(circle.myUpdate, 1 / 60);

		for (var i=0;i<this.pointer_count;i++){
			var towerPoint = cc.Sprite.create(r_towerPoint);
			towerPoint.setPosition(cc.p(this.pointArray[i][0],this.pointArray[i][1]+size.height));
			this.addChild(towerPoint,0,this.enumTag.tag_pointer+i);
            var dyTime = Math.random();
            if(dyTime<0.2){
                dyTime=0.2;
            }
            var actDown = cc.Sequence.create(
            cc.DelayTime.create(dyTime),
            cc.MoveTo.create(0.2,cc.p(this.pointArray[i][0],this.pointArray[i][1]+size.height)),
            cc.MoveTo.create(0.2,cc.p(this.pointArray[i][0],this.pointArray[i][1])),
            cc.MoveTo.create(0.15,cc.p(this.pointArray[i][0],this.pointArray[i][1]+10)),
            cc.MoveTo.create(0.15,cc.p(this.pointArray[i][0],this.pointArray[i][1])));
            towerPoint.runAction(actDown);

			//地名文字
			var fontNode =this.createFontWithBg(this.pointStrArray[i],23,this.pointArray[i][0],this.pointArray[i][1]+33,true,dyTime+0.5,i);
            this.addChild(fontNode,0,this.pointer_count+i);
		}

		//shop
        var shopBtn= cc.Sprite.create(r_shopBtn);
        shopBtn.setPosition(cc.p(size.width - shopBtn.getContentSize().width*0.5, size.height - shopBtn.getContentSize().height*0.5));
		this.addChild(shopBtn,0,this.enumTag.tag_shop)

		//home
        var homeBtn= cc.Sprite.create(r_homeBtn);
        homeBtn.setPosition(cc.p(homeBtn.getContentSize().width, homeBtn.getContentSize().height));
		this.addChild(homeBtn,0,this.enumTag.tag_home)

		//map content
		var mapContent=this.createContentWithBg(0,0,300,500,true,0,-80);
		this.addChild(mapContent,0,this.enumTag.tag_bgJumpContent);
		mapContent.setVisible(false);

		//closeX
		var closeX  = cc.Sprite.create(r_closeX);
		this.addChild(closeX,0,this.enumTag.tag_bgCloseX);
		closeX.setVisible(false);

		//tower proper
		var towerProperPeople = cc.LabelTTF.create("人口:", "Arial-bold", 17);
		var towerProperDef = cc.LabelTTF.create("城防:", "Arial-bold", 17);
		var towerProperAttCount = cc.LabelTTF.create("机甲:", "Arial-bold",17);
		this.addChild(towerProperPeople,0,this.enumTag.tag_towerProperPeople);
		this.addChild(towerProperDef,0,this.enumTag.tag_towerProperDef);
		this.addChild(towerProperAttCount,0,this.enumTag.tag_towerProperAttCount);
		towerProperPeople.setVisible(false);
		towerProperDef.setVisible(false);
		towerProperAttCount.setVisible(false);
		towerProperPeople.setColor(cc.c3b(0,0,0));
		towerProperDef.setColor(cc.c3b(0,0,0));
		towerProperAttCount.setColor(cc.c3b(0,0,0));

		var towerProperPeopleC = cc.LabelTTF.create("", "Arial-bold", 17);
		var towerProperDefC = cc.LabelTTF.create("", "Arial-bold", 17);
		var towerProperAttCountC = cc.LabelTTF.create("", "Arial-bold", 17);
		this.addChild(towerProperPeopleC,0,this.enumTag.tag_towerProperPeopleC);
		this.addChild(towerProperDefC,0,this.enumTag.tag_towerProperDefC);
		this.addChild(towerProperAttCountC,0,this.enumTag.tag_towerProperAttCountC);
		towerProperPeopleC.setVisible(false);
		towerProperDefC.setVisible(false);
		towerProperAttCountC.setVisible(false);
		towerProperPeopleC.setColor(cc.c3b(0,0,0));
		towerProperDefC.setColor(cc.c3b(0,0,0));
		towerProperAttCountC.setColor(cc.c3b(0,0,0));

    },

    logicUpdate:function (dt) {

		if(this.gameState == 0){
			this.randomCount++;
			if(this.randomCount%180==0){
				var resCount= parseInt(Math.random()*5);
				for(var i = 0;i<resCount;i++){
					var pointerIndex = parseInt(Math.random()*10);
					var everyPointer =this.getChildByTag(pointerIndex);
					everyPointer.stopAllActions();
			        var randomDown = cc.Sequence.create(
			        cc.MoveTo.create(0.2,cc.p(everyPointer.getPositionX(),everyPointer.getPositionY()+10)),
			        cc.MoveTo.create(0.2,cc.p(everyPointer.getPositionX(),everyPointer.getPositionY())),
			        cc.MoveTo.create(0.15,cc.p(everyPointer.getPositionX(),everyPointer.getPositionY()+5)),
			        cc.MoveTo.create(0.15,cc.p(everyPointer.getPositionX(),everyPointer.getPositionY())),
					cc.MoveTo.create(0.15,cc.p(everyPointer.getPositionX(),everyPointer.getPositionY()+2)),
					cc.MoveTo.create(0.15,cc.p(everyPointer.getPositionX(),everyPointer.getPositionY())));
			        everyPointer.runAction(randomDown);

				}
				this.randomCount=0;
			}
		}else{
		}

    },

    onTouchBegan:function (touch, event) {
		//point check
		var point =touch.getLocation();

		if(this.gameState == 0){
			for (var i=0;i<this.pointer_count;i++){
				var everyPointer =this.getChildByTag(this.enumTag.tag_pointer+i);
				var _rect = cc.rect(this.pointStrCollisitionArray[i][0],this.pointStrCollisitionArray[i][1],
					this.pointStrCollisitionArray[i][2], this.pointStrCollisitionArray[i][3]); 

				if(cc.rectContainsPoint(everyPointer.getBoundingBox(),point) || cc.rectContainsPoint(_rect,point) ){
					everyPointer.setTexture(cc.TextureCache.getInstance().addImage(r_towerPointPress));
				}
			}
			//shop & home check
			var shopSpr =this.getChildByTag(this.enumTag.tag_shop);
			if(cc.rectContainsPoint(shopSpr.getBoundingBox(),point)){
				shopSpr.setTexture(cc.TextureCache.getInstance().addImage(r_shopBtnPress));
			}
			var homeSpr =this.getChildByTag(this.enumTag.tag_home);
			if(cc.rectContainsPoint(homeSpr.getBoundingBox(),point)){
				homeSpr.setTexture(cc.TextureCache.getInstance().addImage(r_homeBtnPress));
			}
			var closeXSpr =this.getChildByTag(this.enumTag.tag_bgCloseX);
			if(cc.rectContainsPoint(closeXSpr.getBoundingBox(),point)){
				closeXSpr.setTexture(cc.TextureCache.getInstance().addImage(r_closeXPress));
			}

			var towerProperContent =this.getChildByTag(this.enumTag.tag_contentAllPetHpName);
			if(this.selectContentIsShow){
				var towerAdd =towerProperContent.getChildByTag(this.enumTag.tag_contentAdd);
				if(cc.rectContainsPoint(towerAdd.getBoundingBox(),point)){
					towerAdd.setTexture(cc.TextureCache.getInstance().addImage(r_addPress));
				}
				for (var i=0;i<this.petProperArray.length;i++){
					var into_tower =towerProperContent.getChildByTag(this.enumTag.tag_contentIntoTower+i);
					if(cc.rectContainsPoint(into_tower.getBoundingBox(),point)){
						into_tower.setTexture(cc.TextureCache.getInstance().addImage(r_intoTowerPress));
					}
				}
				}
		}else{

		}

		return true;
    },

    onTouchEnded:function (touch, event) {
		var point =touch.getLocation();

		if(this.gameState == 0){

			//---------- back old img ----------
			for (var i=0;i<this.pointer_count;i++){
				var everyPointer =this.getChildByTag(this.enumTag.tag_pointer+i);
				everyPointer.setTexture(cc.TextureCache.getInstance().addImage(r_towerPoint));
			}
			var shopSpr =this.getChildByTag(this.enumTag.tag_shop);
			var homeSpr =this.getChildByTag(this.enumTag.tag_home);
			var closeXSpr =this.getChildByTag(this.enumTag.tag_bgCloseX);

			shopSpr.setTexture(cc.TextureCache.getInstance().addImage(r_shopBtn));
			homeSpr.setTexture(cc.TextureCache.getInstance().addImage(r_homeBtn));
			closeXSpr.setTexture(cc.TextureCache.getInstance().addImage(r_closeX));

			var towerProperContent =this.getChildByTag(this.enumTag.tag_contentAllPetHpName);
			if(this.selectContentIsShow){
				var towerAdd =towerProperContent.getChildByTag(this.enumTag.tag_contentAdd);
				towerAdd.setTexture(cc.TextureCache.getInstance().addImage(r_add));

				for (var i=0;i<this.petProperArray.length;i++){
					var into_tower =towerProperContent.getChildByTag(this.enumTag.tag_contentIntoTower+i);
					into_tower.setTexture(cc.TextureCache.getInstance().addImage(r_intoTower));
				}
			}

			//shop & home check  & content X
			if(cc.rectContainsPoint(shopSpr.getBoundingBox(),point)){ 

			}
			if(cc.rectContainsPoint(homeSpr.getBoundingBox(),point)){
		        var director = cc.Director.getInstance();
				var skillScene =skillScene.createSkillLayer();
				director.replaceScene(skillScene);
			}

			if(cc.rectContainsPoint(closeXSpr.getBoundingBox(),point)){
				this.hideOrShowContent(false,-1,point);
				return;
			}

			if(this.selectContentIsShow){
				var towerAdd =towerProperContent.getChildByTag(this.enumTag.tag_contentAdd);
				if(cc.rectContainsPoint(towerAdd.getBoundingBox(),point)){
					alert("Himi-Tower Name");
				}

				var selectIntoIndex=-1;
				for (var i=0;i<this.petProperArray.length;i++){
					var into_tower =towerProperContent.getChildByTag(this.enumTag.tag_contentIntoTower+i);
					if(cc.rectContainsPoint(into_tower.getBoundingBox(),point)){
						selectIntoIndex =i;
					}
				}
				if(selectIntoIndex!=-1){
					alert("Himi:"+selectIntoIndex);
				}
			}

			//---------- point & tower check ----------

			if(!this.selectContentIsShow){
				//is touch tower
				this.selectTowerIndex=-1;
				for (var i=0;i<this.pointer_count;i++){
					var everyPointer =this.getChildByTag(this.enumTag.tag_pointer+i);
					var _rect = cc.rect(this.pointStrCollisitionArray[i][0],this.pointStrCollisitionArray[i][1],
						this.pointStrCollisitionArray[i][2], this.pointStrCollisitionArray[i][3]); 

					if(cc.rectContainsPoint(everyPointer.getBoundingBox(),point) || cc.rectContainsPoint(_rect,point) ){
						everyPointer.setTexture(cc.TextureCache.getInstance().addImage(r_towerPointPress));
						this.selectTowerIndex= this.enumTag.tag_pointer+i;
					}
				}
				if(this.selectTowerIndex!=-1){
					this.hideOrShowContent(true,this.selectTowerIndex,point);
				}
			}else{
				var contentPosi = this.getChildByTag(this.enumTag.tag_bgJumpContent).getPosition();
				if(!(point.x>=contentPosi.x && point.x<=contentPosi.x+255
					 && point.y<=contentPosi.y+5 && point.y>=contentPosi.y-465)){
					this.hideOrShowContent(false,this.selectTowerIndex,point);
					//is touch tower
					this.selectTowerIndex=-1;
					for (var i=0;i<this.pointer_count;i++){
						var everyPointer =this.getChildByTag(this.enumTag.tag_pointer+i);
						var _rect = cc.rect(this.pointStrCollisitionArray[i][0],this.pointStrCollisitionArray[i][1],
							this.pointStrCollisitionArray[i][2], this.pointStrCollisitionArray[i][3]); 

						if(cc.rectContainsPoint(everyPointer.getBoundingBox(),point) || cc.rectContainsPoint(_rect,point) ){
							everyPointer.setTexture(cc.TextureCache.getInstance().addImage(r_towerPointPress));
							this.selectTowerIndex= this.enumTag.tag_pointer+i;
						}
					}
					if(this.selectTowerIndex!=-1){
						this.hideOrShowContent(true,this.selectTowerIndex,point);
					}
				}
			}
		}else{

		}

    },
    onTouchMoved:function (touch, event) {
    },
    onTouchCancelled:function (touch, event) {
    },

	hideOrShowContent:function(_isShow,selectTowerIndex,point){
		if(_isShow){
			this.selectContentIsShow=true;

			var towerX = this.pointArray[this.selectTowerIndex][0];
			var towerY = this.pointArray[this.selectTowerIndex][1];

			var mapContent=this.getChildByTag(this.enumTag.tag_bgJumpContent);
			mapContent.setVisible(true);
			var mx=0;
			var my=0;
			if(point.y<=500 &&point.y>400 ){
				my=100;
			}else if(point.y<=400 &&point.y>300 ){
				my=240;
			}else if(point.y<=300 && point.y>200){
				my=340;
			}else if(point.y<=200 && point.y>100){
				my=440;
			}else if(point.y<=100){
				my=500;
			}else{
				mapContent.setPosition(cc.p(towerX,towerY));
			}
			var sWidth =cc.Director.getInstance().getWinSize().width;
			if(sWidth-point.x<=300 &&sWidth-point.x>200 ){
				mx=-100;
			}else if(sWidth-point.x<=200 &&sWidth-point.x>100 ){
				mx=-200;
			}else if(sWidth-point.x<=100){
				mx=-300;
			}else{
				mapContent.setPosition(cc.p(towerX,towerY));
			}
			towerX+=mx;
			towerY+=my;
			mapContent.setPosition(cc.p(towerX,towerY));

			var CloseX =this.getChildByTag(this.enumTag.tag_bgCloseX);
			CloseX.setVisible(true);
			CloseX.setPosition(cc.p(towerX+220,towerY-CloseX.getContentSize().height*0.5));

			var properPeople = this.getChildByTag(this.enumTag.tag_towerProperPeople);
			var properDef = this.getChildByTag(this.enumTag.tag_towerProperDef);
			var properAttCount = this.getChildByTag(this.enumTag.tag_towerProperAttCount);
			properPeople.setVisible(true);
			properDef.setVisible(true);
			properAttCount.setVisible(true);
			properPeople.setPosition(cc.p(towerX+30,towerY-CloseX.getContentSize().height*0.5+20));
			properDef.setPosition(cc.p(towerX+30,towerY-CloseX.getContentSize().height*0.5));
			properAttCount.setPosition(cc.p(towerX+30,towerY-CloseX.getContentSize().height*0.5-20));

			var properPeopleC = this.getChildByTag(this.enumTag.tag_towerProperPeopleC);
			var properDefC = this.getChildByTag(this.enumTag.tag_towerProperDefC);
			var properAttCountC = this.getChildByTag(this.enumTag.tag_towerProperAttCountC);
			properPeopleC.setVisible(true);
			properDefC.setVisible(true);
			properAttCountC.setVisible(true);
			properPeopleC.setString(this.getCurrentTowerProperbyIndex(this.selectTowerIndex,0));
			properDefC.setString(this.getCurrentTowerProperbyIndex(this.selectTowerIndex,0));
			properAttCountC.setString(this.getCurrentTowerProperbyIndex(this.selectTowerIndex,0));
			properPeopleC.setPosition(cc.p(towerX+100,towerY-CloseX.getContentSize().height*0.5+20));
			properDefC.setPosition(cc.p(towerX+100,towerY-CloseX.getContentSize().height*0.5));
			properAttCountC.setPosition(cc.p(towerX+100,towerY-CloseX.getContentSize().height*0.5-20));

			//into  this.petProperArray.length

			var allPetNameAndHp = this.getCurrentContentAllPetNameAndHpBg(properAttCountC.getPositionX()-25,properAttCountC.getPositionY()-50);
			this.addChild(allPetNameAndHp,0,this.enumTag.tag_contentAllPetHpName);
		}else{
			this.selectContentIsShow=false;
			var mapContent=this.getChildByTag(this.enumTag.tag_bgJumpContent);
			mapContent.setVisible(false);
			var closeX=this.getChildByTag(this.enumTag.tag_bgCloseX);
			closeX.setVisible(false);
			closeX.setPosition(cc.p(-300,-300));
			var properPeople = this.getChildByTag(this.enumTag.tag_towerProperPeople);
			var properDef = this.getChildByTag(this.enumTag.tag_towerProperDef);
			var properAttCount = this.getChildByTag(this.enumTag.tag_towerProperAttCount);
			properPeople.setVisible(false);
			properDef.setVisible(false);
			properAttCount.setVisible(false);
			var properPeopleC = this.getChildByTag(this.enumTag.tag_towerProperPeopleC);
			var properDefC = this.getChildByTag(this.enumTag.tag_towerProperDefC);
			var properAttCountC = this.getChildByTag(this.enumTag.tag_towerProperAttCountC);
			properPeopleC.setVisible(false);
			properDefC.setVisible(false);
			properAttCountC.setVisible(false);
			if(this.getChildByTag(this.enumTag.tag_contentAllPetHpName)!=null){
				this.removeChildByTag(this.enumTag.tag_contentAllPetHpName);
			}
			selectTowerIndex=-1;
		}
	},

	getCurrentContentAllPetNameAndHpBg:function(_x,_y){
		if(this.getChildByTag(this.enumTag.tag_contentAllPetHpName)!=null){
			this.removeChildByTag(this.enumTag.tag_contentAllPetHpName);
		}

		var petAllHpName = cc.Node.create();

		var contentHurry = this.createFontWithBg("XXOOZX",23,_x+10,_y,false);
		petAllHpName.addChild(contentHurry);

		var contentTowerTime = this.createFontWithBg(this.towerTime[this.selectTowerIndex],23,_x+10,_y-32,false);
		petAllHpName.addChild(contentTowerTime);

		var contentTowerAdd = cc.Sprite.create(r_add);
		contentTowerAdd.setPosition(cc.p(_x+135,_y-13));
		petAllHpName.addChild(contentTowerAdd,0,this.enumTag.tag_contentAdd);

		for(var i = 0 ;i<this.petProperArray.length;i++){
			var name =this.petProperArray[i][0];
			var hp  = this.petProperArray[i][1];
			var hpMax =this.petProperArray[i][2];

			var contentHpName = this.createFontWithBg(name,23,_x+10,_y-i*52-70,false);
			petAllHpName.addChild(contentHpName);

			var intoTower =cc.Sprite.create(r_intoTower);
			intoTower.setPosition(cc.p(_x+135,_y-i*52-75));
			petAllHpName.addChild(intoTower,0,this.enumTag.tag_contentIntoTower+i); 

	        //hp rect
	        var hpRectSprite = new HpRectSprite();
			hpRectSprite._rectWidth= 100;
			hpRectSprite._rectHeigth=8;
			hpRectSprite._x= _x-78;
			hpRectSprite._y= _y-i*52-148;
			hpRectSprite._hp= hp;
			hpRectSprite._maxHp= hpMax;
	        hpRectSprite.setPosition(cc.p(40,60));
	        petAllHpName.addChild(hpRectSprite);

		}
		return petAllHpName;
	},

	getCurrentTowerProperbyIndex:function(_aIndex,index){
		return this.towerProperArray[_aIndex][index];
	},

	createContentWithBg:function(_positionX,_positionY,_contentWidth,_contentHeight,isNeedLine,lineX,lineY){
		var node = cc.Node.create();
		node.setPosition(cc.p(_positionX,_positionY));
		var upLeft = cc.Sprite.create(r_contentUpLeft);
		var upRight = cc.Sprite.create(r_contentUpRight);
		var contentCenter = cc.Sprite.create(r_contentCenter);
		var downLeft = cc.Sprite.create(r_contentDownLeft);
		var downRight = cc.Sprite.create(r_contentDownRight);

		var centerWidth =contentCenter.getContentSize().width;
		var centerHeight =contentCenter.getContentSize().height;

		var hengCount = (_contentWidth-centerWidth-centerWidth)/centerWidth;
		var shuCount = (_contentHeight-centerHeight-centerHeight)/centerHeight;

		for(var i =0;i<hengCount;i++){ 

			for(var j =0; j<shuCount; j++){
				var contentCenter = cc.Sprite.create(r_contentCenter);
				contentCenter.setPosition(cc.p(centerWidth*i,-centerHeight*j));
				node.addChild(contentCenter);
			}
			if(isNeedLine){
				//up line back
				var contentUp = cc.Sprite.create(r_contentUp);
				contentUp.setPosition(cc.p(centerWidth*i+lineX,lineY));
				node.addChild(contentUp);
			}
			//up line
			var contentUp = cc.Sprite.create(r_contentUp);
			contentUp.setPosition(cc.p(centerWidth*i,0));
			node.addChild(contentUp);
			//down line
			var contentDown= cc.Sprite.create(r_contentDown);
			contentDown.setPosition(cc.p(centerWidth*i,-centerHeight*shuCount));
			node.addChild(contentDown); 

		}
		upRight.setPosition(cc.p((centerWidth-1)*hengCount,0));

		for(var j =0; j<shuCount; j++){
			//left line
			var contentLeft= cc.Sprite.create(r_contentLeft);
			contentLeft.setPosition(cc.p(0,-centerHeight*(j+1)));
			node.addChild(contentLeft);
			//right line
			var contentRight= cc.Sprite.create(r_contentRight);
			contentRight.setPosition(cc.p((centerWidth-1)*hengCount,-centerHeight*(j+1)));
			node.addChild(contentRight);
		}
		downLeft.setPosition(cc.p(0,-centerHeight*shuCount));
		downRight.setPosition(cc.p((centerWidth-1)*hengCount,-centerHeight*shuCount));

		node.addChild(upLeft);
		node.addChild(upRight);
		node.addChild(downLeft);
		node.addChild(downRight);

		return node;
	},

    createFontWithBg:function(fontString,fontWidth,_positionX,_positionY,isAddFontCollisiton,_dyTime,_collisitionArrayIndex) {
		var node = cc.Node.create();

		var font = cc.LabelTTF.create(fontString, "Arial", fontWidth);
		font.setColor(cc.c3b(0,0,0));
		font.setPosition(cc.p(_positionX,_positionY));
		var fontWidth =font.getContentSize().width;  

		var fontBgLeft =cc.Sprite.create(r_fontLeft);
		fontBgLeft.setPosition(cc.p(_positionX-fontWidth*0.5,_positionY));

		var tempFontMiddle =cc.Sprite.create(r_fontCenter);
		var fontMiddleWidth=tempFontMiddle.getContentSize().width;
		var countMiddle =fontWidth / fontMiddleWidth;

		var middlePX = _positionX - fontWidth*0.5;

		var fadeOutTime =0.1;

		for(var i =0;i<countMiddle;i++){
			var fontBgMiddle =cc.Sprite.create(r_fontCenter);
			fontBgMiddle.setPosition(cc.p(middlePX,_positionY));
			middlePX+=fontMiddleWidth;
			node.addChild(fontBgMiddle);

			if(isAddFontCollisiton){
				fontBgMiddle.setOpacity(0);
				fontBgMiddle.runAction(cc.Sequence.create(cc.DelayTime.create(_dyTime),cc.FadeIn.create(fadeOutTime)));
			}
		}
		var fontBgRight =cc.Sprite.create(r_fontRight);
		fontBgRight.setPosition(cc.p(middlePX,_positionY));
		node.addChild(fontBgLeft);
		if(isAddFontCollisiton){
			fontBgLeft.setOpacity(0);
			fontBgLeft.runAction(cc.Sequence.create(cc.DelayTime.create(_dyTime),cc.FadeIn.create(fadeOutTime)));
		}
		node.addChild(fontBgRight);
		if(isAddFontCollisiton){
			fontBgRight.setOpacity(0);
			fontBgRight.runAction(cc.Sequence.create(cc.DelayTime.create(_dyTime),cc.FadeIn.create(fadeOutTime)));
		}
		node.addChild(font);
		if(isAddFontCollisiton){
			font.setOpacity(0);
			font.runAction(cc.Sequence.create(cc.DelayTime.create(_dyTime),cc.FadeIn.create(fadeOutTime)));
		}
		//add tower name collisiton x,y,w,h
		if(isAddFontCollisiton){
			this.pointStrCollisitionArray[_collisitionArrayIndex][0]=_positionX-fontWidth*0.5-3;
			this.pointStrCollisitionArray[_collisitionArrayIndex][1]=_positionY-14;
			this.pointStrCollisitionArray[_collisitionArrayIndex][2]=font.getContentSize().width+10;
			this.pointStrCollisitionArray[_collisitionArrayIndex][3]=font.getContentSize().height;
		}

		return node;
    },

    onEnter:function () {
        cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, 0, true);
        this._super();
    },
    onExit:function () {
        cc.Director.getInstance().getTouchDispatcher().removeDelegate(this);
        this._super();
    },
});

var gameScene = cc.Scene.extend({
    onEnter:function () {
        this._super();
        layer = new gameLayer();
        layer.init();
        this.addChild(layer);
    }
});

【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图

时间: 2024-11-05 10:08:34

【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图的相关文章

mysql+ssh整合样例,附源代码下载

项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727 项目源代码下载地址:http://download.csdn.net/detail/adam_zs/7262749 今天花时间把ssh整合了一下,又一次再学习一下,希望对大家有所帮助! 我用的是mysql数据库,建表语句比較简单就不贴出来了,建表的时候记的设置id为自己主动添加?哦. 项目文件位置,项目引用jar包 项目配置文件 web.xml <?xml version="

将 Android* x86 NDK 用于 Eclipse* 并移植 NDK 演示样例应用

目标 面向 Eclipse (ADT) 的 Android 插件如今支持基于 NDK 的应用开发. 其可自己主动生成项目和构件文件以及代码存根,并可集成到整个 Android 应用开发中(构建原生库.将库拷贝到项目内的对应 JNI 目录.将应用打包以及生成带有 NDK 代码的终于 APK). 本文将讨论怎样配置 Eclipse 以利用该功能.并示范移植 NDK 应用的演示样例. 配置 Eclipse ADT 插件以配合 NDK 使用 必须先配置 Eclipse ADT 插件指向 NDK 安装路径

『HTML5梦幻之旅』 - 仿Qt演示样例Drag and Drop Robot(换装机器人)

起源 在Qt的演示样例中看到了一个有趣的demo.截图例如以下: 这个demo的名字叫Drag and Drop Robot,简单概括而言,在这个demo中,能够把机器人四周的颜色拖动到机器人的各个部位,比方说头.臂,身躯等.然后这个部位就会变成相应的颜色.相似于换装小游戏. 上图就是经过愚下的拖动颜色使其简略换装后的样子. 当然,拖动颜色使部件变色的功能并不难实现,关键在于这个机器人是动态的,我们要研究的就恰恰是这个机器人动画是怎么做出来的. 光凭两张图片我们无法知道这个动画究竟是什么样子的,

ArcSDE SDK For Java二次开发介绍、演示样例

在一个工作中,遇到了须要java后台来查询ArcGIS 中用到的Oracle数据库空间数据,因为对ArcGIS空间数据首次接触,仅仅知道Oracle能够使用ST_GEOMETRY字段存储,例如以下图 可是查询时会发现这个ST_GEOMETRY字段会在结果中出现个多个子的字段,对于arcgis地理知识了解甚少,不知道单独查询一个坐标怎么弄了,有些朋友说须要配置监听文件. 无论怎么说,至少參考了一个大牛的文章,http://blog.csdn.net/linghe301/article/detail

JDBC连接MySQL数据库及演示样例

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制.

展示C代码覆盖率的gcovr工具简单介绍及相关命令使用演示样例

(本人正在參加2015博客之星评选,诚邀你来投票,谢谢:username=zhouzxi">http://vote.blog.csdn.net/blogstar2015/candidate?username=zhouzxi) 近期,由于要展示某项目的单元測试的代码覆盖率.我无意间在网上找到了gcovr工具.使用之后,认为这个工具相当的不错,于是便写下这篇文章,可供相关的开发者參考. 简而言之,gcovr是一个将单元測试中的代码覆盖率以多种方式(包含列表方式.XML文件方式.HTML网页方式

最简单的视音频播放演示样例7:SDL2播放RGB/YUV

===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频播放演示样例2:GDI播放YUV, RGB 最简单的视音频播放演示样例3:Direct3D播放YUV,RGB(通过Surface) 最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture) 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV 最简单的视音频播放演示样例

Python Web框架Tornado的异步处理代码演示样例

1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比.tornado不提供操作数据库的ORM接口及严格的MVC开发模式,但能够提供主要的web server功能.故它是轻量级的:它借助non-blocking and event-driven的I/O模型(epoll或kqueue)实现了一套异步网络库,故它是高性能的. Tornado的轻量级+高性能特性使得它特别适用于提供web api的场合

Java 8 时间日期库的20个使用演示样例

除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日期,日历及时间的处理一直以来都饱受诟病.尤其是它决定将java.util.Date定义为可改动的以及将SimpleDateFormat实现成非线程安全的. 看来Java已经意识到须要为时间及日期功能提供更好的支持了,这对已经习惯使用Joda时间日期库的社区而言也是件好事. 关于这个新的时间日期库的最