यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
जीवनचक्र
CrossFly के जीवनचक्र के तीन स्तर हैं: एप्लिकेशन, विंडो (स्क्रीन) और कंपोनेंट।
स्तर 1 — एप्लिकेशन: bootstrap (Main)
Main libGDX का ApplicationListener है। जब प्लेटफ़ॉर्म चालू होता है, libGDX paint thread पर Main.create()
को बुलाता है, और Main:
- प्लेटफ़ॉर्म का पता लगाता है और runtime तथा डिवाइस कॉन्फ़िगरेशन को आरंभ करता है;
- मुख्य विंडो का नाम हल करता है (किसी
classnameतर्क से याgetMainWindow()से); - उस विंडो को रिफ्लेक्शन के ज़रिए इंस्टैंशिएट करता है (
Class.forName(...)→newInstance()) और उसकेonShow()को बुलाता है।
इसके बाद, libGDX render() (हर रेंडर किए गए frame पर) और resize() को बुलाता है — हमेशा paint thread पर।
स्तर 2 — विंडो: onShow()
हर स्क्रीन Window की एक सबक्लास है जो अपनी UI को onShow() में बनाती है (super.onShow() के साथ):
public class TelaHome extends Window {
@Override public void onShow() throws Exception {
super.onShow();
setLayout(new VerticalLayout());
add(LAY_AUTO, new Label("Início"));
}
}
onShow() क्यों और कंस्ट्रक्टर क्यों नहीं? कंस्ट्रक्टर में, bounds और पदानुक्रम अभी तैयार नहीं होते —
Screen.width/height और विंडो का आकार बाद में ही मान्य होते हैं। UI को बहुत जल्दी बनाना गलत मापों की ओर ले जाता
है। (विंडो का स्टैक और नेविगेशन यहाँ हैं विंडो स्टैक।)
स्तर 3 — कंपोनेंट: onAdd(firstTime) / onRemove()
जब कोई कंपोनेंट वृक्ष में प्रवेश करता है, फ्रेमवर्क onAdd(boolean firstTime) को बुलाता है; जब वह निकलता है,
onRemove()। यहीं आप संसाधनों को आरंभ और मुक्त करते हैं:
public class Relogio extends Component {
private Timer timer;
@Override public void onAdd(boolean firstTime) throws Exception {
super.onAdd(firstTime);
if (firstTime) timer = iniciarTimer(); // संसाधन जो केवल एक बार मौजूद होने चाहिए
}
@Override public void onRemove() {
if (timer != null) timer.cancel(); // बाहर निकलते समय हमेशा मुक्त करें
super.onRemove();
}
}
firstTime किसमें अंतर करता है? एक कंपोनेंट को जोड़ा, हटाया और फिर से जोड़ा जा सकता है।
firstTime == true केवल पहली बार होता है — इसे उस setup के लिए उपयोग करें जिसे दोहराया नहीं जाना चाहिए।
onRemove() सफ़ाई की जोड़ी है: timers, listeners, cursores रद्द करें।
सामान्य नियम: UI/संसाधनों को कंस्ट्रक्टर में आरंभ न करें।
onShow()(विंडो) औरonAdd(firstTime)(कंपोनेंट) का उपयोग करें, जहाँ bounds और पदानुक्रम पहले से मान्य हैं।
यह भी देखें
- लागू करें: स्क्रीनों के बीच नेविगेट करें
- आगे: अवस्था और डेटा प्रवाह