2012-05-29 75 views
0

我正在開發一個應用程序,其中有一個可拖動的對象。用戶可以在指定的路徑中拖動此對象,而不是在路徑之外。 爲了實現這一點,我不得不設置邊界條件,以便如果觸點超出了這個範圍,物體就不會移動。設置對象通過拖動對象遍歷路徑的邊界條件

我的問題是,我的對象大小可以說30 * 30。 現在,如果我從頭髮的上方觸摸對象,然後將其拖動到下方,它會給出一個值,但是如果我在下面的某個位置觸摸同一個對象,讓我們說他的下巴,然後將對象移動到相同位置我們移動了前一個。現在在這種情況下,觀點與前一個不同。 所以我不能理解我應該如何設置邊界條件,如果我設置了第一個值的條件,那麼在他的情況下,第二個接觸過程將不能移動,這是錯誤的,如果我設置第二個情況值,則第一個案例對象也能夠在邊界之下移動。 我不使用cocos 2D。它是簡單的ipad應用程序。 enter image description here

更多的瞭解,如果你碰他的左部分的綠色圓圈和走向正確的我現在已經添加了圖像,最後一個值是喜歡760,但如果你觸摸右側部分和向右移動那麼最後一點就是780點。如果垂直拖動對象,則會發生同樣的情況。

我的基本要求是,對象應該只移動到圖像中顯示的路徑之外,而不是在它之外。

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 
    // Retrieve the touch point 
    CGPoint pt = [[touches anyObject] locationInView:gamePice]; 
    startLocation = pt; 
} 

- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event 
{ 

CGPoint pt1 = [[touches anyObject] locationInView:gamePice]; 
CGPoint pt = [[touches anyObject] locationInView:self.view]; 
    NSLog(@"moved=%f|%f",pt.x,pt.y); 

    if (pt.x>=306 && pt.y>=148 && pt.x<=720 && pt.y<=175) { //these conditions how to set 
     CGRect frame = [gamePice frame]; 
     frame.origin.x += pt1.x - startLocation.x; 
     frame.origin.y += pt1.y - startLocation.y; 
     [gamePice setFrame:frame];   
    } 
} 

請建議如何實現此功能或應遵循什麼方法。

+0

üshudnt工作在點..而是你應該工作rects ..如果內部rect(gamepice)相交外部rect ..不允許..否則允許....檢查CGRect方法在這裏.. https://developer.apple.com/ library/mac /#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html – waheeda

+0

你可以pl輕鬆提供我可以遵循的一個或兩個步驟代碼。 – Gypsa

+0

我認爲你必須使用uiview的界限。 –

回答

0

製作一個外部CGRect,可以說CGRectMake(306,148,400,100),它的路徑矩形,許多需要多個矩形,但現在從一個開始。

作出gamePice新的框架,這將是根據觸摸位置的框架,可以說你讓它這樣,

CGRect frame = [gamePice frame]; 
    frame.origin.x += pt1.x - startLocation.x; 
    frame.origin.y += pt1.y - startLocation.y; 

那麼你的條件將是,

if (CGRectContainsRect(outerRect, frame)) 
{ 
     [gamePice setFrame:frame]; 
} 

// else dont move... 
+0

抱歉,它不起作用。 – Gypsa

+0

嘿..是否爲你工作? – waheeda

+0

好的,那麼請發佈您的解決方案,以幫助其他人:) – waheeda