Cocos2d-html5的触屏事件分为单点触屏与多点触屏,由于多点方式用的不多,下面讲解一下单点触屏。
在cocos2d-html5的测试例子tests中有ClickAndMoveTest,以此例子进行讲解。
有三种事件:
1, ccTouchesBegan触屏开始事件;
2, ccTouchesMoved触屏拖动事件;
3, ccTouchesEnded触屏结束事件
下面分析代码:
第一:执行初始化的一些操作
var MainLayer = cc.Layer.extend({
ctor:function() {
第二:激活加速度,保证其中的精灵可以加速移动
this.setIsTouchEnabled(false);
第三:创建精灵及场景,对其进行相应的设置
1.var sprite = cc.Sprite.spriteWithFile(s_pPathGrossini);//创建精灵
2.var layer =cc.LayerColor.layerWithColor(cc.ccc4(255, 255,0, 100));
3. this.addChild(layer, -1);
4. this.addChild(sprite, 0,kTagSprite);
5. sprite.setPosition(cc.PointMake(20, 150));
6. sprite.runAction(cc.JumpTo.actionWithDuration(4, cc.PointMake(300, 48),100,4));
7. var fadeIn =cc.FadeIn.actionWithDuration(1);
8. var fadeOut =cc.FadeOut.actionWithDuration(1);
9. var forever =cc.RepeatForever.actionWithAction(cc.Sequence.actions(fadeIn,fadeOut));
10. layer.runAction(forever);
第四:在对应的layer里面加入一个ccTouchesEnded事件执行对应的函数操作。
1.ccTouchesEnded:function (pTouches, pEvent){}
不难找到其中的x、y坐标,我们的例子中是这样找坐标的:
1.if (pTouches.length <= 0)
2. return;
3.
4. var touch = pTouches[0];
5. var location =touch.locationInView(touch.view());
6. //var convertedLocation=cc.Director.sharedDirector().convertToGL(location);
7. var sprite =this.getChildByTag(kTagSprite);
8. sprite.stopAllActions();
9. sprite.runAction(cc.MoveTo.actionWithDuration(1,cc.PointMake(location.x,location.y)));
当鼠标点击结束的时候就会执行此方法里的对应方法,会执行上面红色字体的代码,移动到对应坐标。