मैं स्विफ्ट कोड में निरंतर उपयोगकर्ता स्पर्श को कैसे पहचान सकता हूं? निरंतर मेरा मतलब है कि उपयोगकर्ता की स्क्रीन पर उसकी उंगली है। जब तक उपयोगकर्ता स्क्रीन को छू रहा है, तब तक मैं उपयोगकर्ता के स्पर्श की दिशा में एक स्प्राइट किट नोड को स्थानांतरित करना चाहता हूं।स्विफ्ट में लगातार स्पर्श कैसे पहचानें?
उत्तर
इस प्रक्रिया के बारे में सबसे कठिन बात एक मल्टीटच पर्यावरण के भीतर एक छूता ट्रैक कर रहा है। इस के "सरल" समाधान के साथ समस्या (यानी, touchesBegan
में "आइसचॉच" चालू करें और touchesEnded
में इसे बंद करें) यह है कि यदि उपयोगकर्ता स्क्रीन पर दूसरी उंगली छूता है और फिर इसे ले जाता है, तो यह पहले स्पर्श के कार्यों को रद्द कर देगा ।
इस बुलेटप्रूफ को बनाने के लिए, आपको अपने जीवनकाल में व्यक्तिगत स्पर्शों को ट्रैक करने की आवश्यकता है। जब पहला स्पर्श होता है, तो आप उस स्पर्श के स्थान को सहेजते हैं और ऑब्जेक्ट को उस स्थान की ओर ले जाते हैं। किसी भी और स्पर्श की तुलना पहले स्पर्श से की जानी चाहिए, और अगर वे पहले स्पर्श नहीं हैं तो उन्हें अनदेखा किया जाना चाहिए। यह दृष्टिकोण आपको मल्टीटाउच को संभालने की भी अनुमति देता है, जहां ऑब्जेक्ट को स्क्रीन पर वर्तमान में किसी भी उंगली की ओर बढ़ने के लिए बनाया जा सकता है, और फिर अगली उंगली पर ले जाया जाता है यदि पहले वाला उठाया जाता है, और इसी तरह।
यह ध्यान रखना महत्वपूर्ण है कि UITouch
ऑब्जेक्ट्स touchesBegan
, touchesMoved
, और touchesEnded
पर स्थिर हैं। touchesBegan
में बनाए गए UITouch
ऑब्जेक्ट के बारे में आप सोच सकते हैं, touchesMoved
में बदलकर touchesEnded
में नष्ट हो गया। आप touchesBegan
में बनाए गए टच ऑब्जेक्ट के संदर्भ को सहेजकर अपने जीवन के दौरान स्पर्श के चरण को ट्रैक कर सकते हैं, फिर touchesMoved
में आप किसी भी मौजूदा स्पर्श और परिवर्तन के नए स्थान की जांच कर सकते हैं ऑब्जेक्ट का कोर्स यदि उपयोगकर्ता अपनी उंगली चलाता है (आप जिटर को रोकने के लिए सहनशीलता लागू कर सकते हैं, उदाहरण के लिए, यदि x/y दूरी कुछ सहिष्णुता से कम है, तो पाठ्यक्रम को न बदलें)। touchesEnded
में आप यह जांच सकते हैं कि फ़ोकस में स्पर्श समाप्त हो गया है या ऑब्जेक्ट के आंदोलन को रद्द कर दिया गया है, या इसे अभी भी होने वाले किसी अन्य स्पर्श की ओर बढ़ने के लिए सेट किया गया है। यह महत्वपूर्ण है, जैसे कि आप किसी भी पुराने टच ऑब्जेक्ट को समाप्त करने की जांच करते हैं, यह अन्य स्पर्शों को भी रद्द कर देगा, जो अप्रत्याशित परिणाम उत्पन्न कर सकता है।
यह लेख Obj सी में है, लेकिन कोड स्विफ्ट को आसानी से पोर्टेड है और आपको पता चलता है कि आप क्या करने की जरूरत है, बस के नीचे "एक परिसर बहुस्पर्श अनुक्रम हैंडलिंग" सामान की जाँच: https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/multitouch_background/multitouch_background.html
बुनियादी कदम
- स्टोर स्पर्श नहीं रह गया है का पता चला है जब स्पर्श घटनाओं (
touchesBegan
/touchesMoved
) उस स्थान की ओर - ले जाएँ स्प्राइट नोड के स्थान (
update
) - बंद करो नोड चलती (
touchesEnded
)
यहाँ कैसे करना है, इसका एक उदाहरण है कि
0,123,Xcode 8
let sprite = SKSpriteNode(color: SKColor.white, size: CGSize(width:32, height:32))
var touched:Bool = false
var location = CGPoint.zero
override func didMove(to view: SKView) {
/* Add a sprite to the scene */
sprite.position = CGPoint(x:0, y:0)
self.addChild(sprite)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
touched = true
for touch in touches {
location = touch.location(in:self)
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
location = touch.location(in: self)
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
// Stop node from moving to touch
touched = false
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
if (touched) {
moveNodeToLocation()
}
}
// Move the node to the location of the touch
func moveNodeToLocation() {
// Compute vector components in direction of the touch
var dx = location.x - sprite.position.x
var dy = location.y - sprite.position.y
// How fast to move the node. Adjust this as needed
let speed:CGFloat = 0.25
// Scale vector
dx = dx * speed
dy = dy * speed
sprite.position = CGPoint(x:sprite.position.x+dx, y:sprite.position.y+dy)
}
Xcode 7
let sprite = SKSpriteNode(color: SKColor.whiteColor(), size: CGSizeMake(32, 32))
var touched:Bool = false
var location = CGPointMake(0, 0)
override func didMoveToView(view: SKView) {
self.scaleMode = .ResizeFill
/* Add a sprite to the scene */
sprite.position = CGPointMake(100, 100)
self.addChild(sprite)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Start moving node to touch location */
touched = true
for touch in touches {
location = touch.locationInNode(self)
}
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Update to new touch location */
for touch in touches {
location = touch.locationInNode(self)
}
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
// Stop node from moving to touch
touched = false
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
if (touched) {
moveNodeToLocation()
}
}
// Move the node to the location of the touch
func moveNodeToLocation() {
// How fast to move the node
let speed:CGFloat = 0.25
// Compute vector components in direction of the touch
var dx = location.x - sprite.position.x
var dy = location.y - sprite.position.y
// Scale vector
dx = dx * speed
dy = dy * speed
sprite.position = CGPointMake(sprite.position.x+dx, sprite.position.y+dy)
}
- 1. स्विफ्ट स्प्राइटकिट आइसोमेट्रिक मानचित्र स्पर्श स्थान
- 2. स्विफ्ट 2 अप्रयुक्त लगातार चेतावनी
- 3. HttpWebRequest: ब्राउज़र के रूप में कैसे पहचानें?
- 4. Matlab में अतिप्रवाह बग को कैसे पहचानें?
- 5. स्पर्शों के बीच लगातार तरीके से स्पर्श को ट्रैक करने के लिए कैसे करें: और स्पर्श करें :?
- 6. दुर्भावनापूर्ण स्रोत कोड कैसे पहचानें?
- 7. छवियों में संख्याओं को पहचानें
- 8. स्पर्श
- 9. स्पर्श
- 10. स्विफ्ट
- 11. स्पर्श
- 12. UIScrollView स्पर्श बनाम सबव्यूव स्पर्श
- 13. पहचानें फ़ाइलों linux
- 14. पहचानें जीएसएम एन्क्रिप्शन एल्गोरिथ्म
- 15. गुम जगह को पहचानें
- 16. यूआईस्लाइडर समस्या - आईओएस में स्लाइडर बटन जारी करने वाले उपयोगकर्ता को कैसे पहचानें?
- 17. cocos2d में बहु स्पर्श कैसे सक्षम करें?
- 18. ActiveRecord में एकाधिक रिकॉर्ड कैसे स्पर्श करें?
- 19. सेवा स्पर्श स्पर्श/घटनाओं के लिए कैसे सुन सकती है?
- 20. मैं स्पर्श कैसे अक्षम करूंगेगन: बहु स्पर्श के लिए?
- 21. पहचानें बिंदु बहुभुज में है अगर
- 22. Arduino COM पोर्ट को स्वतः कैसे पहचानें?
- 23. आईपैड - उस मल्टीटास्किंग जेस्चर को कैसे पहचानें?
- 24. मूल प्रिंटर को पहचानें
- 25. php के साथ बॉट को कैसे पहचानें?
- 26. स्क्रीन को कैसे पहचानें उच्च-पांच
- 27. आईओएस पर किसी उपयोगकर्ता को कैसे पहचानें?
- 28. जावा में लगातार HttpURLConnection
- 29. कैसे डिवाइस Sencha स्पर्श आवेदन
- 30. स्पर्श घटना अनुकरण कैसे करें?