2009-06-28 37 views
12

मैं एक .swf फ़ाइल लिखने में सक्षम होना चाहता हूं जो कमांड लाइन ऐप के रूप में चलाने योग्य है। दूसरे शब्दों में, मैं एक्शनस्क्रिप्ट कक्षाएं बनाने में सक्षम हूं जो stdin और stdout के साथ बातचीत कर सकते हैं, और फिर कमांड लाइन में .swf को निष्पादित कर सकते हैं।क्या 'कमांड लाइन' एसएफएफ बनाना संभव है?

मुझे संदेह है कि यह वास्तव में संभव नहीं है। क्या कोई इसकी पुष्टि कर सकता है?

संपादित करें: कुछ उत्तरों ने इंगित किया कि कमांड लाइन काम के लिए फ़्लैश का उपयोग शायद सबसे अच्छा विकल्प नहीं है। मैं पूरी तरह से ज्यादातर स्थितियों में सहमत हूं। कारण मैं इसके बारे में पूछ रहा हूं क्योंकि मैं कुछ एएस 3 कोड पीढ़ी करना चाहता हूं, और रनटाइम के भीतर एएस 3 कक्षाओं को प्रतिबिंबित करने से कोड को पार्स करने या एसोसिएक उत्पन्न करने वाले मध्यवर्ती एक्सएमएल चलने से आसान होगा। मैं रूबी में अब एक्सएमएल दृष्टिकोण कर रहा हूं, लेकिन क्लीनर समाधान करना पसंद करेंगे!

+1

यह प्रयास का एक बहुत बचाने के लिए चाहते हैं AS3 में अपने तर्क डाल करने के लिए, यह रूबी (या जो भी) stdin/stdout और एक फ्लैश या आकाशवाणी के साथ एक गर्तिका कनेक्शन के बीच में एक पुल बाहर चोट के लायक हो सकता है एप्लिकेशन। रूबी, एक एआरआई ऐप को एक बंदरगाह के साथ एक तर्क के रूप में बुला सकता है, कनेक्शन की प्रतीक्षा कर सकता है, और फिर दोनों दिशाओं को पाइप करना शुरू कर सकता है। जैसा कि आप बताते हैं कि एएस 3 पक्ष काम करेगा, अगर आप अपने सॉकेट/एक्सएमएल सॉकेट का दावा करते हैं तो स्टडीन/आउट करने के लिए एक पाइप है। – fenomas

+0

ओह, अब यह एक दिलचस्प दृष्टिकोण है! मैं बस एएस 3 में एक amqp क्लाइंट के बारे में कल रात पढ़ रहा था। मैं शायद हमें rabbitMQ या एक रूबी ड्राइवर और कोड को खींच रहा था जो एक as3 swf के बीच गुजरने वाले ब्रोकर संदेश के समान हो सकता है। –

+0

मैंने आने वाले कनेक्शन सुनने के लिए एआईआर की अक्षमता के आसपास जावा के साथ कुछ उचित रूप से समान किया है। मैंने जावा में एक्ससॉकेट और फ्लैश साइड पर एक्सएमएल सॉकेट का इस्तेमाल किया और इसके लिए बहुत कुछ नहीं था। जावा पक्ष पर मैं stdout/in के बजाय एक टीसीपीआईपी पोर्ट पर ब्रिजिंग कर रहा था, लेकिन मुझे नहीं लगता कि यह बहुत अलग है .. – fenomas

उत्तर

-5

नहीं - संभव नहीं है। सबसे अच्छा आप एक स्टैंडअलोन ऐप (जिसे फ्लैश में बनाया जा सकता है या फ्लैश प्लेयर के प्रोजेक्टर संस्करण के साथ, एडोब वेबसाइट से उपलब्ध है)।

और आप क्यों चाहते हैं - फ्लैश शानदार जीयूआई क्षमताओं के कारण शानदार है। ऐसी कई अन्य प्रोग्रामिंग भाषाएं हैं जो कमांड लाइन (पायथन या रूबी या, ईश्वर मनाई, यहां तक ​​कि पर्ल) के लिए बहुत उपयुक्त हैं

+1

धन्यवाद। मैंने सवाल के लिए एक स्पष्टीकरण जोड़ा कि क्यों मैं कमांड लाइन पर एएस 3 का उपयोग करना चाहता था। –

+0

यह उत्तर पूरी तरह से सही नहीं है, कमांड लाइन * कर * के माध्यम से एक एसडब्ल्यूएफ निष्पादित करने के तरीके हैं। – Peter

8

स्पष्ट रूप से Tamarin प्रोजेक्ट है जिसका उद्देश्य एएस 3 का ओपन सोर्स कार्यान्वयन बनाना है। This page एक AS3 स्क्रिप्ट संकलित करने और इसे कमांड लाइन से चलाने का थोड़ा विवरण देता है।

मुझे कोई अच्छा विचार नहीं है कि Tamarin कितनी स्थिर है, लेकिन यह अब के लिए आपका सबसे अच्छा शर्त हो सकता है। दूसरी तरफ, मुझे @zenazn से दृढ़ता से सहमत होना है कि आप लंबी अवधि के सीखने के लिए सामान्य उद्देश्यों के लिए अधिक भाषा सीखने से बेहतर होंगे, लेकिन वास्तव में केवल एक्शनस्क्रिप्ट का उपयोग करना चाहते हैं, किसी को भी आपको रोकने न दें:)

+0

Tamarin एवीएम 2 वर्चुअल मशीन है जो फ़्लैश प्लेयर 9 + के भीतर संकलित एक्शनस्क्रिप्ट ऑपोड (एबीसी, या एक्शनस्क्रिप्ट बाइट कोड) निष्पादित करती है। एडोब ने इस वीएम को मोज़िला फाउंडेशन को दान में दान दिया है, उम्मीद है कि वे इसे फ़ायरफ़ॉक्स के साथ जेआईटी संकलन (जस्ट इन टाइम) में जावास्क्रिप्ट को एबीसी को ब्राउज़र में बहुत तेजी से निष्पादन के लिए एकीकृत करेंगे। क्रोम/क्रोमियम के साथ Google क्या कर रहा है इसके समान। – Luke

+0

Tamarin अब अप्रचलित/निष्क्रिय है। –

2

अभी एक बेयर एसडब्ल्यूएफ के साथ ऐसा करने का कोई तरीका नहीं है।

हालांकि, आप अपनी फ्लैश सामग्री को एआईआर ऐप के रूप में प्रकाशित कर सकते हैं। ऐप को कमांड लाइन से बुलाया जा सकता है, और आप argumentsInvokeEvent की संपत्ति से तर्क एकत्र कर सकते हैं। मूल विचार इस तरह दिखता है:

NativeApplication.nativeApplication.addEventListener( 
      InvokeEvent.INVOKE, onInvoke); 
// ... 
function onInvoke(e:InvokeEvent) { 
    var numArguments:int = e.arguments.length; 
    // ... 
} 

नोट, हालांकि, यह अनिवार्य रूप से एक तरफा सड़क है। आप कमांड लाइन तर्कों को पकड़ सकते हैं, लेकिन फ्लैश अभी भी stdin और stdout के विचार को नहीं समझता है।

0

आप haXe पर देख सकते हैं जो AS3 के समान है और NekoVM बाइटकोड संकलित कर सकता है, जिसे कमांड लाइन पर चलाया जा सकता है।

दिलचस्प भी HippoHX हो सकता है, यह फ़्लैश फिल्मों से डेस्कटॉप एप्लिकेशन बनाने के लिए एक प्रकार का ढांचा है। (एआईआर के समान, लेकिन सिस्टम तक पूर्ण पहुंच के साथ।)

0

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

यह एक और भाषा सीखने का एक अच्छा समय हो सकता है। क्या मैं जावा का सुझाव दे सकता हूं?

2

असल में, एक ऐसी परियोजना है जो इसे संभव बनाता है।रेडटामरिन एक ऐसी परियोजना है जो एएस 3 (तकनीकी रूप से, तामारिन प्रोजेक्ट जो एडोब/मोज़िला ईसीएमएस्क्रिप्ट प्रोजेक्ट है) को निम्न-स्तरीय पुस्तकालयों (यानी पीओएसईक्स) तक पहुंच प्रदान करती है। अपने वर्तमान स्थिति में यह शेल-स्क्रिप्टिंग-जैसी प्रोग्राम जैसी चीजों के लिए अच्छा प्रतीत होता है जो कि आप जो खोज रहे हैं उसके समान लगता है।

http://code.google.com/p/redtamarin/

1

अब यह आकाशवाणी 2.0 के साथ संभव है:

इसे आज़मा कर देखें। शुरू करने के लिए this article देखें।

23

हाँ! यह वास्तव में संभव है।

आप एक शुद्ध AS3 एयर परियोजना (बिना किसी एप्लिकेशन विंडो के) बना सकते हैं और एडीएल (एआईआर डीबग लॉन्चर) का उपयोग कर कमांड लाइन से चला सकते हैं।

एडीएल आपके एसडब्ल्यूएफ को निष्पादित करेगा और आप जो भी तर्क सीधे इसे अपने आवेदन पर रनटाइम पर देंगे - सब कमांड लाइन से! AS3 से तर्क पढ़ने के लिए बस अपने मुख्य वर्ग के लिए इस कोड जोड़ें:

package 
{ 
    import flash.desktop.NativeApplication; 
    import flash.display.Sprite; 
    import flash.events.InvokeEvent; 

    public class CmdLine extends Sprite 
    { 
     public function CmdLine() 
     { 
     NativeApplication.nativeApplication.addEventListener(
      InvokeEvent.INVOKE, onInvokeEvent); 

     function onInvokeEvent(invocation:InvokeEvent):void { 
      trace(invocation.arguments); 
     } 
     } 
    } 
} 

आपका मुख्य वर्ग अभी भी Sprite का विस्तार होगा, लेकिन जब तक आप NativeWindow वस्तुओं को बनाने आप किसी भी यूआई नहीं देख सकेंगे। यदि आप फ्लैश बिल्डर का उपयोग कर रहे हैं, तो बस एक नई एआईआर प्रोजेक्ट बनाएं और मुख्य .mxml फ़ाइल का विस्तार .as (विज़ार्ड समाप्त करने से पहले) का नाम बदलें।

यहाँ ADL के बारे में अधिक है: Using the AIR Debug Launcher (ADL)

इसके अलावा, यह बहुत उपयोगी हो सकता है: AIR application invocation and termination

आप अपने सभी उत्पादन trace() उपयोग कर सकते हैं, फ़ाइलों को लिखते हैं, या के रूप में भी here देखा, stdout पर लिखते ।

2

आप stdin, stdout और redtamarin साथ stderr साथ बातचीत कर सकते

http://code.google.com/p/redtamarin/

देखने के उदाहरण/डॉक्स यहाँ

http://code.google.com/p/redtamarin/wiki/System#stdout

http://code.google.com/p/redtamarin/wiki/System#stderr

http://code.google.com/p/redtamarin/wiki/System#stdin

वहाँ फ्लैश और ActionScript 3 फ्लैश बीच एक अंतर है एक क्रम है, AS3 एक भाषा

है मैं नहीं दिख रहा है यही कारण है कि AS3 कमांड लाइन और/या सर्वर साइड के लिए एक अच्छा प्रोग्रामिंग भाषा नहीं होगा

अब, redtamarin बस यही है, एक रनटाइम जो आपको को कमांड लाइन पर अपने AS3 स्रोत कोड को चलाने की अनुमति देता है।

इसके अलावा, अपनी आवश्यकताओं पर निर्भर करता है, आप इसे अलग अलग तरीकों से

  1. कमांड लाइन पर स्क्रिप्ट चलाने के लिए

    $ ./redshell myscript.as

  2. रन एबीसी में उपयोग कर सकते हैं या कमांड लाइन

    $ ./redshell myscript.abc

    पर एसडब्ल्यूएफ फाइलें

    $ ./redshell myscript.swf

  3. रन एक exectuable

    एएससी $ ./myscript

जब आप एक AS3 स्क्रिप्ट यह गतिशील रूप में व्याख्या की जाएगी चलेगा, का उपयोग कर आप करेंगे इस स्क्रिप्ट को एबीसी फ़ाइल पर संकलित करने में सक्षम हो जिसे कमांड लाइन से भी चलाया जा सकता है।

उदाहरण के लिए आप कई एबीसी एक साथ फ़ाइलें इकट्ठा करने के लिए की जरूरत है, तो आप उन्हें SWF फ़ाइल और रनटाइम में विलय करने के लिए कमांड लाइन से भी कि SWF फ़ाइल चलेंगे swfmake उपयोग कर सकते हैं।

अंत में, आप अपने एबीसी या SWF फ़ाइल लेने के लिए और क्रम अपने आप के साथ मर्ज एक स्वतंत्र निष्पादन प्राप्त करने के लिए करने के लिए createprojector उपयोग कर सकते हैं अगर आप एक निष्पादन, में सब कुछ बंडल करने की जरूरत है।

Redtamarin देशी एपीआई कि फाइल सिस्टम का उपयोग, सॉकेट, ऑपरेटिंग सिस्टम की जानकारी, आदि को कवर

0

मैं हाल ही में एक ऐसी ही सवाल था प्रदान करते हैं। मुझे अपने लिए जवाब देने में कुछ दिन लगे, लेकिन आप एक एसएसएफ बना सकते हैं और पूरी तरह से कमांड लाइन से इसे निष्पादित कर सकते हैं।

AS3 Filesystem Hello World

संबंधित मुद्दे