很多游戏中都有转盘中奖的设置,学习不久就把转盘来练手即熟悉了api同时也有点实用价值的。
核心代码如下:
var MenuLayer= cc.Layer.extend({
sprite:null,
ctor:function(){
this._super();
var size = cc.winSize;
var center_x=size.width*0.5;
var center_y=size.height*0.5;
//转盘
var zp_sprite=new cc.Sprite(res.zhuan_pan_png);
zp_sprite.x=center_x;
zp_sprite.y=center_y;
this.addChild(zp_sprite);
//数据初始化
var zp_cx=zp_sprite.width*0.5;
var zp_cy=zp_sprite.height*0.5;
var zp_len=135;
var e_rot=2*Math.PI/8;
var data={"img":res.asset1_png,"name":"樱桃"},
{"img":res.asset2_png,"name":"番茄"},
{"img":res.asset3_png,"name":"红萝卜"},
{"img":res.asset4_png,"name":"包菜"},
{"img":res.asset5_png,"name":"南瓜"},
{"img":res.asset6_png,"name":"草莓"},
{"img":res.asset7_png,"name":"花菜"},
{"img":res.asset8_png,"name":"胡萝卜"}]
var len=data.length;
for(var i=0;i0&&speed<0.2)
{
speed=0;
acc=0;
}
zp_sprite.setRotation(zp_sprite.getRotation()+speed);
var p=zp_sprite.convertToNodeSpace(cc.p(center_x,center_y+zp_len));
var len=data.length;
var temp_tag=0;
var temp_distance=10000;
for(var i=0;i<len;i++)
{
var child=zp_sprite.getChildByTag(i+100)
var distance=(child.x-p.x)*(child.x-p.x)+(child.y-p.y)*(child.y-p.y)
if(distance<temp_distance)
{
temp_distance=distance;
temp_tag=i;
}
}
cur_tex=cc.textureCache.addImage(data.img);
cur_spr.setTexture(cur_tex)
}
cc.director.getScheduler().scheduleCallbackForTarget(
shou_spr,ani_shou_handler,0.1,cc.REPEAT_FOREVER,0,false)
cc.director.getScheduler().scheduleCallbackForTarget(
zp_sprite,ani_zp_handler,0.1,cc.REPEAT_FOREVER,0,false);
return true;
}
});
```
blog原文地址:http://blog.rgbtime.com/topic/11/%25E5%259F%25BA%25E4%25BA%258Ecocos2d%25E7%259A%2584%25E6%25B8%25B8%25E6%2588%258F%25E8%25BD%25AC%25E7%259B%2598demo
再赚个外链 http://www.rgbtime.com
*