1
我需要在遊戲中檢測我想要做的遊戲中的長時間觸摸。我該怎麼做?
我面臨的其他問題是限制同時觸摸。即如果用戶一個接一個地觸及兩次以上,則精靈不會跳躍。
也是他們的一種方式,我可以添加觸摸持續時間因素的精靈跳躍的高度?檢測長時間觸摸
謝謝
我需要在遊戲中檢測我想要做的遊戲中的長時間觸摸。我該怎麼做?
我面臨的其他問題是限制同時觸摸。即如果用戶一個接一個地觸及兩次以上,則精靈不會跳躍。
也是他們的一種方式,我可以添加觸摸持續時間因素的精靈跳躍的高度?檢測長時間觸摸
謝謝
你如何抓住你的觸摸?我總是用下面的方法:
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
- (void)ccTouchMoved:(UITouch *)touchx withEvent:(UIEvent *)event
- (void)ccTouchEnded:(UITouch *)touchx withEvent:(UIEvent *)event
而在這些方法,您可能需要完全控制所有的觸摸。例如記住觸摸啓動的時間:
self.startTime = [NSDate date];
一個實例變量開始時間,或者檢查是否觸摸屬於某個對象:
CGRectContainsPoint(self.rect, [self convertTouchToNodeSpaceAR:touch]);
這樣你就可以輕鬆實現你的觸摸邏輯你喜歡的方式...
一個好辦法做到這一點 - 我發現 - 遊戲,喜歡的對象中定義的所有必需的變量...
@interface Enemy : CCSprite <CCTargetedTouchDelegate> {
EnemyState state;
NSInteger enemyID;
NSDate *startTime;
NSDate *endTime;
UITouch *lastTouch;
添加了使用混凝土示例代碼ccTouchBegan:
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
D_DBG (@"ENEMY ID %i",self.enemyID);
//implement your logic if a touch for this enemy is allowed or not
if (![self.delegate touchIsAllowed: enemyID touch: touch]) return NO;
//if the enemy is untouched, then may be touched
if ((state == kEnemyStateUngrabbed) && (![self containsTouchLocation:touch])) return NO;
state = kEnemyStateGrabbed;
self.startTime = [NSDate date];
[self.delegate informAboutEnemyStarted: self.enemyID startTime: self.startTime atPoint: self.position];
return YES;
}
Thanks.But如何開始時間表示觸摸的開始? – Nitish 2011-04-25 10:10:26
In - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)事件 您會發現被觸摸的對象,然後將其設置爲可變的startTime。 - (void)ccTouchEnded:(UITouch *)touchx withEvent:(UIEvent *)事件結束時相同。你只需要自己發送每一個觸摸,並檢查是什麼意思。但這幾乎自動完成,如果你使用這些方法... ... - >不要忘記\t \t [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:theEnemy優先級:0 swallowsTouches:YES];因此,敵人可以吞噬敵人的地方是敵人敵人 – user387184 2011-04-25 10:17:18
Thanks.I得到你所說的。讓我執行上述。 – Nitish 2011-04-25 10:22:47