मैं इस उत्कृष्ट ट्यूटोरियल का उपयोग किया है एक छोटी परियोजना मैं शामिल भौतिकी पर काम कर रहा हूँ kickoff करने के लिए:बनाम CALayer
http://www.cocoanetics.com/2010/05/physics-101-uikit-app-with-box2d-for-gravity/
असल में, यह एक दुनिया बनाता है और भौतिक विज्ञान लागू होता है आपके पास जो भी विचार है, बी 2 डी का। बहुत आसान और यह काम करता है। हालांकि, मैंने CALayers का उपयोग कर एक ही तर्क को लागू करने का प्रयास किया, यानी, मैं प्रोग्रामेटिक रूप से परतें बनाते हैं, उन्हें मुख्य दृश्य में जोड़ें। प्लेयर और उन्हें एनिमेट करने का प्रयास करें। परत बनाने के लिए
नमूना कोड:
CALayer *layer = [CALayer layer];
layer.backgroundColor = [UIColor blackColor].CGColor;
layer.frame = CGRectMake(50, 100, 30, 30);
layer.name = @"square";
[self.view.layer addSublayer:layer];
और टिकर में लागू भौतिकी:
CALayer *oneLayer = (CALayer *)b->GetUserData();
// y Position subtracted because of flipped coordinate system
CGPoint newCenter = CGPointMake(b->GetPosition().x * PTM_RATIO, self.view.bounds.size.height - b->GetPosition().y * PTM_RATIO);
oneLayer.position = newCenter;
CGAffineTransform transform = CGAffineTransformMakeRotation(- b->GetAngle());
oneLayer.affineTransform = transform;
सूचना है कि मैं अनुकूलित affine CALayer वर्ग के लिए कॉल को बदलने।
मैंने चर की जांच की है और दोबारा जांच की है, और संख्याएं मेल खाने लगती हैं। मुझे जो मिलता है वह कैलियर एनीमेशन से एक अजीब उछाल है, और UIView से एक परिपूर्ण एनीमेशन है। बॉक्स 2 डी और यूआईकिट में अनुभव करने वाले किसी को यह जवाब देने के लिए क्यों किया जा रहा है?
आप व्याख्या कर सकते हैं "अजीब उछाल" – erkanyildiz
यह: आप
CATransaction
में अपने कोड लपेट और इस आशय से छुटकारा पाने के कार्यों को निष्क्रिय करने के लिए है UIView। CALayer "जमीन" मारने से पहले उछाल। एक कारण मुझे यह सोचने के लिए प्रेरित करता है कि आयाम et al। सही हैं इस तथ्य के कारण कि कैलियर अंततः जमीन को छूने वाले फ्रेम के नीचे उछाल बंद कर देता है। – hcabral