//
// 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触碰例子代码的更多相关文章

  1. 触屏设备上的多点触碰检测C++代码实现

    转自:http://aigo.iteye.com/blog/2272698 代码还是参考自Epic官方的塔防项目:StrategyGame 看了下C++的API,现成的API中貌似只支持单点触碰检测, ...

  2. cocos2dx基础篇(7) 触碰事件

    cocos2dx游戏引擎的重点是在于移动设备的跨平台开发,而移动设备上的游戏大部分都是通过屏幕触碰来进行的.比如主菜单的按钮触碰,打飞机中飞机的触碰移动,都需要用到触碰操作.想一想之前讲的菜单按钮CC ...

  3. 触碰jQuery:AJAX异步详解

    触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML( ...

  4. 触碰jQuery:AJAX异步详解(转)

    AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1)   使用CSS和X ...

  5. Android基础新手教程——3.4 TouchListener PK OnTouchEvent + 多点触碰

    Android基础新手教程--3.4 TouchListener PK OnTouchEvent + 多点触碰 标签(空格分隔): Android基础新手教程 本节引言: 如题,本节给大家带来的是To ...

  6. TouchListener PK OnTouchEvent + 多点触碰

    1.基于监听的TouchListener 代码示例: 实现效果图: 实现代码: main.xml <RelativeLayout xmlns:android="http://schem ...

  7. 爬虫界的福利--touchRobot,机器模拟触碰滑动库(已开源)

    此插件能干什么? 一句话概括:通过程序主动触发移动端滑动.拖拽.触碰等操作 插件有什么用呢? 可以用于爬虫,也可以用于自动化测试以及程序演示 插件演示地址 (从网上扒了一个canvas绘图的demo, ...

  8. <<精通iOS开发>>第14章例子代码彻底清除警告

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇我们解决了<<精通iOS开发>> ...

  9. swiper4自动轮播切换手动触碰后停止踩坑——属性disableOnInteraction

    swiper4轮播设置autoplay自动切换后,即默认设置: <script> var mySwiper = new Swiper('.swiper-container', { auto ...

随机推荐

  1. JSTL配置

    1.下载jakarta-taglibs-standard-1.1.2.zip(在Weblogic中必须下载1.0版http://jakarta.apache.org/site/downloads/do ...

  2. 启动OracleDBConsoleorcl失败,提示错误代码2

    异常问题: 启动OracleDBConsoleorcl失败,提示错误代码2 原因分析: 由于更改计算机名导致的异常 解决方法: 1.管理员权限cmd下执行emctl start dbconsole 2 ...

  3. 刷题ING...

    我用codeVS刷题.. 努力准备!!

  4. 强大的矩阵奇异值分解(SVD)及其应用

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  5. 视图(View) – ASP.NET MVC 4 系列

           精心编写的整洁代码是开发一个可维护 Web 应用程序的基础.但用户在浏览器中访问时,这些工作他们是看不见的.用户对应用程序的第一印象,以及与应用程序的整个交互过程都是从视图开始的.    ...

  6. Java命名规范基础

    一.java命名规范 1.类和接口:由多个单词组成时,所有单词的首字母大写,如TestJava 2.变量名和方法(函数):由多个单词组成时,所有第一个单词的首字母小写,之后每一个单词的首字母大写,如: ...

  7. div标签上下滚动

    <div id="myInfo" style={{width:'100%',height:'100%', overflow:'scroll'}}></div> ...

  8. 领域驱动(DD)目录

    领域驱动(DD)目录 1.领域驱动概念 2.通用语言 3.限定上下文

  9. C#实现任意大数的计算和简单逻辑命题的证明——前言

    介绍 这是本人毕业设计的项目,一直想将其整理成文,可一不小心4年就过去了(这个时间又可以读个大学了).现在给自己定一个目标,一个月时间里将项目的所有关键点都整理出来.不然真怕一眨眼又一个4年过去了,而 ...

  10. jquery 通知页面变化

    var PageTitleNotification = { Vars: { OriginalTitle: document.title, Interval: null, IsNotificationE ...