2010-11-23 6 views
2

Nehmen wir an, ich nehme eine reine Javascript-Bibliothek ... eine, die in keiner Weise auf das DOM angewiesen ist.Können Sie eine Javascript-Bibliothek nehmen und in Flash ausführen?

Nun, sagen wir, ich möchte diese Bibliothek nehmen und uns in Flex. Gibt es einen guten Weg, dies zu tun? Ich kann das Javascript nicht einfach einschließen, da es nicht so nah an ActionScript ist, um es zu kompilieren ... aber gibt es einen guten Konverter, der es für mich tut? Nehmen Sie die JavaScript-Prototyp-Stilklassen und konvertieren Sie sie in ActionScript-Klassen?

Schließlich möchte ich den Browser dafür nicht verwenden. Ich weiß, dass ich immer ExternalInterface verwenden kann, um auf den Browser zuzugreifen, aber ich lasse meine Flex-App nicht immer im Browser laufen ... manchmal ist es Air, und manchmal ist es in einem PDF.

Irgendwelche Gedanken dazu?

+0

Keine Ideen für einen Konverter, aber JavaScript und ActionScript 3 teilen den gleichen ECMA-Standard, also könnten Sie ihn theoretisch konvertieren ... –

Antwort

3

Normalerweise Portierung von JS zu AS ist nicht zu schwer. Aber vielleicht möchten Sie Jangaroo auschecken. Es geht in die andere Richtung, AS -> JS, aber könnte in umgekehrter Richtung verwendet werden.

3

Warum überhaupt stören? ActionScript enthält bereits util-Klassen für Dinge, die Sie möglicherweise tun müssen, und die meisten JavaScript-Bibliotheken befassen sich mit dem Verhalten des DOM. Eine der schönsten Eigenschaften von jQuery ist beispielsweise die Fähigkeit, jedes Element über seinen CSS-Selektor zu adressieren. Und Sie werden das nie in ActionScript finden, weil es einfach keinen Sinn ergibt.

Vielleicht ist eine bessere Frage, welche Features einer Javascript-Bibliothek Sie in ActionScript sehen möchten? Sehr wahrscheinlich gibt es bereits eine Klasse, die das tut, was Sie wollen, und wenn nicht, ist es einfach, eine zu erstellen.

+0

Wow ... Ich bin ein wenig überrascht zu sehen, dass Ihre Antwort drei Up-Stimmen bekommt. und jemand mit Ihrer Anwesenheit bei SO, um mir eine Antwort wie "Warum überhaupt zu stören?" nicht hilfreich zu machen. Zuallererst habe ich die Frage aus einem Grund gestellt ... weil ich ein Bedürfnis habe. Ich habe eine Reihe spezifischer Mathematik-/Set-Prozeduren für meine Domain, die es in ActionScript, Flash oder Flex nicht gibt. Ich möchte den Code erneut verwenden. Zweitens ist es falsch zu sagen, dass jQuery in AS3 keinen Sinn ergibt ... zumindest in Flex, da es auch CSS unterstützt. Siehe AS3Query - http://drawlogic.com/2008/04/24/as3query-actions-script-port-of-jquery/ –

+1

@Brian: Bei allem Respekt, wenn Sie diese spezifischen Anforderungen angegeben hätten, hätten Sie möglicherweise eine bessere erhalten Antworten. Zweitens, wenn Ihre Javascript-Bibliotheken hauptsächlich mathematische Algorithmen sind, sollten sie mit wenig oder gar keiner Änderung in AS3 funktionieren. Drittens ist die Flex-Unterstützung für CSS begrenzt und AS3Query selbst ist begrenzt, schlecht dokumentiert und in mancher Hinsicht inkompatibel mit AS3 (Probleme mit FlexBuilder usw.). Wenn es Ihr Boot jedoch schwimmt, genießen Sie es. – Robusto

+0

Es scheint mir ziemlich klar zu sein, wonach ich gefragt habe ... aber kein großes Whoop. Wie auch immer, es gibt viele Änderungen, die an diesem JS vorgenommen werden müssen, damit es in ActionScript ausgeführt wird ...hauptsächlich aufgrund der Unterschiede in der Art, wie Klassen definiert sind. Nicht, dass ich die Arbeit nicht per Hand erledigen könnte ... es ist relativ trivial ... aber wenn es einen automatisierten Prozess dafür gäbe, wäre das Teilen einfacher - vor allem, wenn Änderungen am JS-Code vorgenommen werden müssen verschmolzen ... das ist alles. –

1

Abhängig von der Komplexität der Bibliothek, die Sie verwenden möchten, könnte es entweder eine triviale Änderung sein, indem Sie einige erforderliche Parameter hinzufügen (wie das Paket {} Wrapper und so weiter). Einige der Transformationen sind jedoch nicht trivial und erfordern möglicherweise einen vollständigen Compiler.

Ich frage mich, wie viel Arbeit wäre es, ein neues Backend für die Closure Compiler zu schreiben. Ich habe den Quellcode nicht gelesen, aber ich gehe davon aus, dass es einigermaßen modular ist. Auf diese Weise wäre die Umwandlung automatisch modulo die Dinge, die Sie nicht in AS3 wie DOM Manipulation tun können.

Auch wenn Sie dies verwenden, würden Sie einige der schönen Dinge von AS3 nicht bekommen, wie z. Auch die Konvertierung von Prototyp zu Vererbung ist eine nicht-triviale Umwandlung, daher würden Sie diese wahrscheinlich auch nicht bekommen.

Verwandte Themen