cocos2d触碰例子代码
//
// TestLayer.h
// MiniTD
//
// Created by OnePiece on 12-7-30.
// Copyright 2012年 __MyCompanyName__. All rights reserved.
// #import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "CCCrack.h" @interface TestLayer : CCNode
{
CCCrack *crack;
}
+(id)scene;
@end
//
// TestLayer.m
// MiniTD
//
// Created by OnePiece on 12-7-30.
// Copyright 2012年 __MyCompanyName__. All rights reserved.
// #import "TestLayer.h"
#import "CCExtendLabel.h"
#import "BaseDefine.h"
#import "CCCrack.h"
#import "UpgradeNode.h"
@interface TestLayer()<UIGestureRecognizerDelegate>{
UpgradeNode *upgradeNode;
int buildStep;
CCSprite *sprite; }
@end
@implementation TestLayer
+(id)scene
{
CCScene *scene = [CCScene node];
TestLayer *testLayer = [TestLayer node];
[scene addChild:testLayer]; return scene;
}
//多指操作看来最好还是用真机测试,测试各种手势之间的冲突情况
-(void)onEnter{
[super onEnter]; sprite=[[CCSprite alloc] initWithFile:@"gege.png"];
sprite.position=ccp(,);
[self addChild:sprite]; // [self buildingProcess]; UIPanGestureRecognizer * panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)];
panRecognizer.delegate = self; // panRecognizer.cancelsTouchesInView=NO;
// panRecognizer.delaysTouchesBegan=YES; int fff= panRecognizer.maximumNumberOfTouches; //=2;
int fdsfdsf= panRecognizer.minimumNumberOfTouches; //=2; //panRecognizer.minimumNumberOfTouches=2;
// panRecognizer.maximumNumberOfTouches=2;
UILongPressGestureRecognizer *pressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePressFrom:)];
pressGesture.minimumPressDuration = ; pressGesture.allowableMovement = ; pressGesture.delaysTouchesBegan=YES; pressGesture.cancelsTouchesInView=NO; pressGesture.delegate = self; // int ff= pressGesture.numberOfTapsRequired;
// int ffff= pressGesture.numberOfTouchesRequired;
//
// pressGesture.numberOfTouchesRequired=2;
// pressGesture.numberOfTapsRequired=0; [[[CCDirector sharedDirector]openGLView]addGestureRecognizer:panRecognizer]; [[[CCDirector sharedDirector]openGLView]addGestureRecognizer:pressGesture]; }
-(void)handlePressFrom:(UILongPressGestureRecognizer *)recognizer
{ if([recognizer state] == UIGestureRecognizerStateBegan)
{
printf("长按开始\n"); }
else if([recognizer state] == UIGestureRecognizerStateChanged)
{ printf("长按移动\n");
}
else if([recognizer state] == UIGestureRecognizerStateEnded)
{
printf("长按结束\n");
}
} //地图的平移
- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { if(recognizer.state == UIGestureRecognizerStateBegan)
{
printf("开始位移\n");
}
else if(recognizer.state == UIGestureRecognizerStateChanged)
{
printf("位移中\n");
}
else if (recognizer.state == UIGestureRecognizerStateEnded)
{
printf("位移结束\n");
}
} //- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
//{
// return YES;
//}
//-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
//{
// return YES;
//} -(void)buildingProcess;
{
if(!upgradeNode)
{
buildStep = ;
upgradeNode = [UpgradeNode nodeWithParent:self Level:];
upgradeNode.position = ccp(,);
[self addChild:upgradeNode z:MaxZorder];
[upgradeNode startProgress]; // //建造过程特效
// CCSprite *buildEffectSprite = [CCSprite spriteWithSpriteFrameName:@"military_build_1.png"];
// buildEffectSprite.opacity = 1;
// buildEffectSprite.position = ccp(buildEffectSprite.contentSize.width/2,buildEffectSprite.contentSize.height/2);
// [mainSprite addChild:buildEffectSprite z:1 tag:200];
// [buildEffectSprite runAction:[CCFadeIn actionWithDuration:1.6]];
//
sprite.opacity=;
[sprite runAction:[CCFadeIn actionWithDuration:]]; [self schedule:_cmd]; //调用自身方法 } // // 2秒为啥和1.6*3对应
//
int percentage = [upgradeNode percentage]; if(buildStep == && percentage >= )
{
buildStep = ; // mainSprite.opacity = 255;
// //很聪明啊,通过叠加的效果
// [mainSprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"military_build_1.png"]];
//
// CCSprite *buildEffectSprite = (CCSprite*)[mainSprite getChildByTag:200];
// [buildEffectSprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"military_build_2.png"]]; [sprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"military_build_2.png"]]; sprite.opacity = ; [sprite runAction:[CCFadeIn actionWithDuration:]]; [self unschedule:_cmd]; //停止轮训自身 }
// else if(buildStep == 2 && percentage >= 64)
// {
// buildStep = 3;
//
// [mainSprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"military_build_2.png"]];
//
// CCSprite *buildEffectSprite = (CCSprite*)[mainSprite getChildByTag:200];
// [buildEffectSprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"militaryTower2.png"]];
// buildEffectSprite.opacity = 0;
// [buildEffectSprite runAction:[CCFadeIn actionWithDuration:1.6]];
// }
//
//
// if(buildStep ==3 && percentage >= 100)
// {
//
//
//
// buildStep = -1; //建好了
//
// [upgradeNode endProgress];//移除loading
// upgradeNode = nil;//置空
//
// buildComplete = true; //建塔完毕
//
// [mainSprite removeChildByTag:200 cleanup:YES];
//
// CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"militaryTower2.png"];
// [mainSprite setDisplayFrame:frame];
// mainSprite.position = ccp(17,-33);
//
//
// //升级的效果
// [self upgradeSmoke];//烟雾
//
// [self unschedule:_cmd]; //停止轮训自身
//
//
//
//
//
//
// isCanUpgradeMainTower = true;//可以升级主建筑
//
// [self UpgradeBuildWithLevel:curUpgradeLevel Property:curPropertyCount Brach:hybrid Skill:(SkillStruct){0,0}];
//
// //音乐先忽略
// // [SoundManager stopEffect:buildEffectID];
// // [SoundManager playEffect:Military_Build];
//
//
//
//
//
// zorderPos = ccpAdd(baseSprite.position,ccp(0,-45));
// [self.parent reorderChild:self z:[user zorderForPosition:zorderPos]];
//
// [self focusAnimation:@"LostFocus"];
//
// //检测是否需要显示锁定精灵
// if(curUpgradeLevel == maxUpgradeLevel)
// {
// lockSprite.visible = YES;
// }
//
//
// //检查士兵 是否移动到新的旗子点
// [self schedule:@selector(scheduleSoldier) interval:0.5f];
//
// //实时检测是否需要更新胡萝卜数
// [self scheduleUpdate];
//
// //更新buff
// [self schedule:@selector(updateBuff) interval:0.2];
//
// [user addTower:self];
//
// //增加一个建塔数成就点
// [[AchievementManager sharedManager] addTowerType:Military_Tower Count:1 TowerLevel:1];
// }
} -(id)init
{
if(self = [super init])
{
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:- swallowsTouches:YES];
} return self;
} -(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
// crack = [CCCrack bladeWithMaximumPoint:100];
// [crack setTexture:[[CCTextureCache sharedTextureCache] addImage:@"streak.png"]];
// [self addChild:crack];
printf("轻点开始\n");
return YES;
} -(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
// CGPoint location = [self convertTouchToNodeSpace:touch];
//
// [crack push:location]; printf("轻点滑动\n");
} -(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
printf("轻点结束\n");
}
-(void) ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event
{
printf("触碰取消\n");
} @end
[[CCDirector sharedDirector] runWithScene:[CCTransitionFade transitionWithDuration:0.5 scene:[TestLayer scene] withColor:ccBLACK]];
cocos2d触碰例子代码的更多相关文章
- 触屏设备上的多点触碰检测C++代码实现
转自:http://aigo.iteye.com/blog/2272698 代码还是参考自Epic官方的塔防项目:StrategyGame 看了下C++的API,现成的API中貌似只支持单点触碰检测, ...
- cocos2dx基础篇(7) 触碰事件
cocos2dx游戏引擎的重点是在于移动设备的跨平台开发,而移动设备上的游戏大部分都是通过屏幕触碰来进行的.比如主菜单的按钮触碰,打飞机中飞机的触碰移动,都需要用到触碰操作.想一想之前讲的菜单按钮CC ...
- 触碰jQuery:AJAX异步详解
触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML( ...
- 触碰jQuery:AJAX异步详解(转)
AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1) 使用CSS和X ...
- Android基础新手教程——3.4 TouchListener PK OnTouchEvent + 多点触碰
Android基础新手教程--3.4 TouchListener PK OnTouchEvent + 多点触碰 标签(空格分隔): Android基础新手教程 本节引言: 如题,本节给大家带来的是To ...
- TouchListener PK OnTouchEvent + 多点触碰
1.基于监听的TouchListener 代码示例: 实现效果图: 实现代码: main.xml <RelativeLayout xmlns:android="http://schem ...
- 爬虫界的福利--touchRobot,机器模拟触碰滑动库(已开源)
此插件能干什么? 一句话概括:通过程序主动触发移动端滑动.拖拽.触碰等操作 插件有什么用呢? 可以用于爬虫,也可以用于自动化测试以及程序演示 插件演示地址 (从网上扒了一个canvas绘图的demo, ...
- <<精通iOS开发>>第14章例子代码彻底清除警告
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇我们解决了<<精通iOS开发>> ...
- swiper4自动轮播切换手动触碰后停止踩坑——属性disableOnInteraction
swiper4轮播设置autoplay自动切换后,即默认设置: <script> var mySwiper = new Swiper('.swiper-container', { auto ...
随机推荐
- Java中对session的简单操作
1.jsp中操作session <% String name=(String)request.getSession().getAttribute("username"); / ...
- CGRectInset & CGRectOffset
1.CGRectInset CGRect CGRectInset ( CGRect rect, CGFloat dx, CGFloat dy);以原rect为中心,再参考dx,dy,进行缩 ...
- Linux中的入口函数main
main()函数,想必大家都不陌生了,从刚开始写程序的时候,大家便开始写main(),我们都知道main是程序的入口.那main作为一个函数,又是谁调用的它,它是怎么被调用的,返回给谁,返回的又是什么 ...
- XJOI‘s story (不定期连载)
王城双基的力量.... 我也不知道写写这种东西会不会被查大表..尴尬 . 我为什么要写这东西: 为了蛤鸡 为了红太阳 xj 人物列传 2017 1,6 Friday 得到大新闻 机房后面的监 ...
- NOIP2016报零记
其实,NOIP2016已经于10天之前就结束了,但是由于种种原因,没有写总结. 现在就来填上这个坑吧. DAY1: T1:一道简(kun)单(nan)的模拟,虽然ac,但是考试的时候总觉得怪怪的.并且 ...
- code complete part1
最近在看code complete,学习了一些东西,作为点滴,记录下来. 关于类: 类的接口抽象应该一致 类的接口要可编程,不要对类的使用者做过多的假设.不要出现类似于:A的输入量一定要大于多少小于多 ...
- 简述 C、C++程序编译的内存分配情况【转】
面试题 9:简述 C.C++程序编译的内存分配情况 C.C++中内存分配方式可以分为三种: (1)从静态存储区域分配: 内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在.速度快. ...
- liunx之:ln命令
linux 一个很重要的命令 它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是: ln -s 源文件 目标文件 -s 是 symbolic的意思 ...
- 使用jQuery Autocomplete(自动完成)插件
jQuery 的Autocomplete(自动完成.自动填充)插件有不少,但比较下来我感觉,还是bassistance.de 的比较强大,我们就来写一些代码感受一下. 最简单的Autocomplete ...
- [PHP] - Laravel - 列表、新增、修改、删除例子
前言 Laravel默认是自带了CURD的功能,使用路由的Route::resource可以做到. 但真正的项目中,这往往不是我们所需要的.因为一个项目会有比较复杂的计算.验证等功能. 下面是对项目中 ...