2013-01-07 2 views
0

J'essaie de me familiariser avec l'utilisation de Chipmunk (pas la version Obj-C) avec les composants UIKit sur iOS, et je me bats toujours énormément.Accrocher des corps de chipmunk aux composants UIKit?

J'essaie d'établir comment, dans l'exemple ChipmunkColorMatch de la documentation, les instances UIButton sont connectées à l'un des calculs physiques. Je vois que les UIButtons sont créés à l'intérieur de la classe Ball, et certaines de leurs propriétés sont définies (type, image, etc.), mais je ne comprends pas où cpBody ou cpShape ou quoi que ce soit est réellement attaché à cette UIButton . Je suppose que cela doit être, sinon aucune de la physique ne sera reflétée dans l'interface utilisateur. J'ai aussi regardé dans le tutoriel SimpleObjectiveChipmunk sur le site web, mais étant donné qu'il utilise des bibliothèques qui ne sont pas disponibles pour moi (les bibliothèques Obj-C), je ne peux pas non plus établir comment cela fonctionne. Encore une fois, je vois un UIButton créé et positionné à l'écran, mais je ne vois pas comment le cpBody (ou dans ce cas, ChipmunkBody) est lié au bouton de quelque façon que ce soit.

Quelqu'un pourrait-il nous éclairer sur la façon dont cela fonctionne? Ce dont je vais avoir besoin, ce sont des instances d'UIButton qui peuvent être déplacées, mais je n'ai même pas encore travaillé sur la façon de créer des forces, car je n'arrive pas à relier les corps aux boutons.

Très obligé, merci d'avance.

EDIT: Doit également souligner que je ne suis pas, et ne veulent pas utiliser cocos2d dans ce projet du tout. J'ai vu des tutoriels en utilisant cela, mais c'est une troisième couche de confusion à ajouter. Merci!

Répondre

1

En supposant this source est le projet que vous vous posez au sujet, il semble que la magie se passe dans la méthode de syncBall - il crée un CGAffineTransform représentant la translation et de rotation déterminée par le moteur physique, et applique que le bouton .

À son tour, cette méthode est appelée par la méthode du contrôleur de vue draw:, qui est programmée pour se produire sur toutes les images en utilisant CADisplayLink, et met à jour le moteur physique avant de dire à chaque Ball-sync.

+0

Il vaut probablement la peine de rappeler que [UIKit possède maintenant son propre moteur physique] (https://developer.apple.com/library/ios/samplecode/DynamicsCatalog/Introduction/Intro.html). – rickster

Questions connexes