OpenFL (हैक्स) के लिए एक देशी विस्तार पुस्तकालय बनाना

प्रस्तावना


यदि आप मोबाइल एप्लिकेशन बनाने के बारे में सोच रहे हैं, लेकिन यह नहीं पता है कि कहां से शुरू करें, तो आपके पास नई चीजों को प्रयोग करने और सीखने के लिए पर्याप्त समय है, तो मैं आपको एक उपकरण के रूप में हेक्स प्रोग्रामिंग भाषा चुनने की सलाह देता हूं। आपने उसके बारे में सुना होगा और हो सकता है कि उसे फ्लैश के बदले किसी तरह का रिप्लेसमेंट सुना हो। यह पूरी तरह से सच नहीं है, और कोई गलत भी कह सकता है।

हां, हेक्स मानक लाइब्रेरी में कक्षाओं और कार्यों का एक सबसेट है जो संगठनात्मक रूप से एक्शनस्क्रिप्ट 3 मानक लाइब्रेरी के समान है। लेकिन यह आपको लिनक्स, विंडोज, एंड्रॉइड, मैक, आईओएस जैसे देशी प्लेटफार्मों के लिए एप्लिकेशन बनाने से नहीं रोकता है।

देशी प्लेटफ़ॉर्म के लिए एप्लिकेशन बनाते समय, मानक लाइब्रेरी की क्षमताएं पर्याप्त नहीं होती हैं और आपको थर्ड-पार्टी लाइब्रेरी की तलाश करनी होती है या अपना खुद का विकास करना होता है। मैंने दूसरा रास्ता लिया और वर्तमान परियोजना के लिए (यांत्रिकी में ट्रिपलटाउन के समान एक छोटा खेल) मैंने फ्लूर्री, लोकलिटिक्स, Googleप्ले गेम सर्विसेज और कुछ अन्य सेवाओं के साथ काम करने के लिए एक पुस्तकालय विकसित किया।

नीचे दिए गए अनुवाद में बताया गया है कि यदि आप विशेष रूप से haxe और OpenFL फ्रेमवर्क (पूर्व NME ) के लिए एक्सटेंशन की लाइब्रेरी बनाना चाहते हैं, तो कहां से शुरू करें। मूल लेख लॉरेंट बेदुबर्ग के लेखक।


OpenFL के लिए एक सरल एक्सटेंशन बनाएं


कुछ समय पहले तक, मैंने iOS और Android पर एप्लिकेशन प्रकाशित करने के लिए Adobe टूल का उपयोग किया था।

ओपनएफएल गति प्राप्त कर रहा है और लगता है कि परिपक्वता के पर्याप्त स्तर तक पहुंच गया है, इसलिए मैंने अपनी अगली परियोजना के लिए इसका उपयोग करने का फैसला किया।

उच्च-स्तरीय पुस्तकालयों का उपयोग करें, लेकिन कभी-कभी आपको उन मूल कार्यों की आवश्यकता होती है जो दस्तावेज़ में वर्णित हैं, लेकिन पुस्तकालयों से सुलभ नहीं हैं। इस समस्या को हल करने के लिए, एक Adobe ANE है और यह कहा जाना चाहिए कि यह इसे अच्छी तरह से करता है।

लेकिन हम OpenFL में समान सुविधाएं कैसे प्राप्त करते हैं? नीचे मैं इस कार्य से निपटने के अपने प्रयासों का वर्णन करूंगा।

निम्न तरीके से, OpenFL से टेम्पलेट का उपयोग करके, आप एक एक्सटेंशन बना सकते हैं:
$ openfl create extension TestExtension $ cd TestExtension $ ls -1 TestExtension.hx #    haxe    haxelib.json #    haxelib include.xml #  , openfl     #    ndll/ #         #  project/ #    

सभी समर्थित प्लेटफार्मों के लिए विस्तार को संकलित करने के बाद, संबंधित मूल पुस्तकालय ndll / निर्देशिका में दिखाई देंगे।
 cd project/ haxelib run hxcpp Build.xml haxelib run hxcpp Build.xml -Dandroid haxelib run hxcpp Build.xml -Diphoneos -DHXCPP_ARMV7 haxelib run hxcpp Build.xml -Diphonesim 

अब हमें अपने विस्तार को haxelib में पंजीकृत करने की आवश्यकता है:
 cd .. haxelib dev TestExtension `pwd` 

यह सुनिश्चित करने के लिए कि एक्सटेंशन बनाना सफल रहा, निम्नलिखित कार्य करें:
 mkdir TestApp cd TestApp 

Project.xml बनाएं:
 <?xml version="1.0" encoding="utf-8"?> <project> <meta title="TestApp" package="me.labe.testapp" version="1.0.0" company="Laurent Bedubourg" /> <app main="Main" path="Export" file="TestApp" /> <source path="." /> <haxelib name="openfl" /> <haxelib name="TestExtension" /> </project> 


Main.hx:
 class Main { public static function main(){ var t = new flash.text.TextField(); t.text = Std.string(TestExtension.sampleMethod(16)); flash.Lib.current.addChild(t); } } 

संकलन और परीक्षण निम्नानुसार है:
 openfl test project.xml cpp openfl test project.xml android openfl test project.xml ios -simulator openfl test project.xml ios 

मैक और एंड्रॉइड पर सब कुछ ठीक काम करता है।

मुझे अभी भी यह पता लगाने की आवश्यकता है कि बाहरी पुस्तकालयों का उपयोग कैसे करें, विभिन्न प्लेटफार्मों के लिए स्रोत कोड को कैसे तैयार किया जाए, लेकिन यह एक अच्छी शुरुआत है: एडोब एयर (एएनई) के लिए एक्सटेंशन की तुलना में ओपनएफएल के लिए एक्सटेंशन बनाना आसान है।

दुर्भाग्य से, मेरे पास अभी भी आईओएस के लिए लिंक त्रुटियां हैं और जब मैं उनसे निपटता हूं, तो मैं इस लेख को अपडेट करूंगा।

मेरे गितुब भंडार में, मैंने एक लेख से उदाहरण के लिए स्रोत कोड पोस्ट किया। और यहोशू ग्रानिक के ब्लॉग पर, आप एक्सटेंशन बनाने के बारे में एक लेख पा सकते हैं।

जोड़ : ऐसा लगता है कि iOS के तहत लिंक करने के साथ मेरी समस्याएं आयातित कार्यों के मामले के नामों के बेमेल से संबंधित हैं। एक बार यह त्रुटि ठीक हो जाने के बाद, आप कम मामले में (iOS के तहत अपेक्षित) नामों वाले एक्सटेंशन के साथ आसानी से प्रयोग कर सकते हैं।

जोड़ : निश्चित रूप से, यह आयातित कार्यों के नामों की बेमेल समस्या है। ओपनएफएल रिपॉजिटरी में त्रुटि का विवरण है, इसलिए आप स्वतंत्र रूप से ट्रैक कर सकते हैं जब यह तय हो जाएगा।

जोड़ : यहोशू ग्रानिक ने एक्सटेंशन टेम्प्लेट तय किया, इसलिए अब सबकुछ ठीक चलेगा *।

* अनुवादक से - मैंने अनुवाद के सभी जोड़ इस उद्देश्य से छोड़े कि ऐसी त्रुटियां होने पर वे किसी के काम आ सकते हैं।

Source: https://habr.com/ru/post/In186230/


All Articles