AS3程序员小福利--as3js介绍及FlashDevelop工程的配置

本文作者:IMWeb 黄龙 原文出处:IMWeb社区 未经同意,禁止转载

什么是AS3JS?

AS3JS是ActionScript 3.0到JavaScript的转换器,它基本上可以让你使用ActionScript 3.0语言编写客户端和服务器端JavaScript应用程序。AS3JS是不是一个框架。此工具也没有设计成用于转换的Flash到HTML5解决方案(虽然它可能会帮助!)。现在AS3JS纯粹是转换器,但是你可以自由的扩展它,如果你愿意,因为它是开源的。

github项目地址:https://github.com/cleod9/as3js

它是如何工作的?

AS3JS通过正则表达式解析ActionScript类文件,并将它们转换成JavaScript可以理解的文本。这意味着所有的AS3特定关键字会被去除,以及将代码重新组织成可在一个JS环境中运行的单个文件。

源代码的输出是可读的,因为它类似于原始AS3代码。没有复杂的结构。最关键的一点要记住的是,AS3,其核心是JavaScript的语法糖。这意味着,你可以选择你想要的AS3的功能,以用于项目。

安装和使用

交代一句,$符号不用输入,前提是你装了node

$ npm i -g as3js

可以像下面这样使用它

$ as3js -src ./path/to/as3/source -o output.js

在FlashDevelop中使用它

第一步:新建一个项目,选择Empty Project

如图所示:

第二步:配置项目

1.为了方便目录管理,在目录下新建src和bin目录,用于存放源码和编译后的文件

2.在src目录下新建Main.as

package src 
{
    public class Main 
    {
        public function Main() 
        {

        }
    }
}

发现问题了么?package是src。解决的办法是先把FlashDevelop关掉,再在项目目录里面找到"项目名.as3proj"文件,用其他编辑器打开(不要双击好么)。找到图中所示位置把<class path="." />改成<class path="src">

3.删掉Main.as然后再创建Main.as。再在里面写上console.log("Hello world!");

package 
{
    public class Main 
    {
        public function Main() 
        {
            console.log("Hello world!");
        }
    }
}

4.在项目中新建make.bat

as3js -src src -o bin/output.js -e new:Main

5.在bin目录中新建index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>AS3JS测试</title>
</head>
<body>
    <script src="output.js"></script>
</body>
</html>

6.配置项目属性

1> 在输出选项卡下如图配置

2> 在编译现象卡下如图配置

7.按F5运行,打开控制台并没有输出‘hello world’。原因是这个as3js目前这个版本很弱,暂时不支持顶级的包 或者是说TM就是个bug。我们可以把Main.as修改一下放到src/app目录下。顺便我们还需要修改一下make.bat

as3js -src src -o bin/output.js -e new:app.Main

8.按F5运行,打开控制台hello world是不是出来了。

接下来我们看一下编译出的output.js或许你就明白了刚刚为啥不能输出hello world;

output.js

(function ( options ) {
  options = options || {};
  var AS3JSUtils = function () {};
  AS3JSUtils.getDefaultValue = function getDefaultValue(value, fallback) {
    return (typeof value != 'undefined') ? value : fallback;
  };
  AS3JSUtils.createArray = function (size, val) {
    var arr = [];
    for (var i = 0; i < size; i++)  {
      arr.push(val); 
    }
    return arr;
  };
  if (typeof Object.create !== 'function') {
    Object.create = function (o) {
      function F() {}
        F.prototype = o;
        return new F();
    }
  };

  var i, j;
  var packages = {
    "app": {
      Main: {
        compiled: false,
        source: function ( module ) {

          var Main = function() {
                console.log("Hello world!");
              };





          module.exports = Main;

        }
      }
    }
  };

  var imports = function ( packageName, className ) {
    if (!packages[packageName][className].compiled) {
      packages[packageName][className].compiled = true;
      packages[packageName][className].module = { exports: null, inject: null };
      packages[packageName][className].source(packages[packageName][className].module);
    }
    return packages[packageName][className].module.exports;
  };

  for (i in packages) {
    for (j in packages[i]) {
      imports(i, j);
    }
  }
  for (i in packages) {
    // Execute the injection functions
    for (j in packages[i]) {
      if (typeof packages[i][j].module.inject === 'function') {
        packages[i][j].module.inject();
      }
    }
  }

  if (options.entryPackage && options.entryClass) {
    var entryPoint = imports(options.entryPackage, options.entryClass);
    if (options.entryMode === "new") {
      new entryPoint();
    } else if (options.entryMode === "exports" && typeof module !== 'undefined') {
      module.exports = entryPoint;
    }
  }
})({ entryPackage: "app", entryClass: "Main", entryMode: "new" });

接下来可以愉快的玩耍了 helloworld工程地址:https://github.com/as3long/as3js_helloworld

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.1K20
来自专栏haifeiWu与他朋友们的专栏

复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

26340
来自专栏钱塘大数据

理工男图解零维到十维空间,烧脑已过度,受不了啦!

让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

26530
来自专栏微信公众号:小白课代表

不只是软件,在线也可以免费下载百度文库了。

不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

43230
来自专栏钱塘大数据

中国互联网协会发布:《2018中国互联网发展报告》

在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

13150
来自专栏怀英的自我修炼

考研英语-1-导学

英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

11210
来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

17230
来自专栏腾讯高校合作

【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

15020
来自专栏腾讯社交用户体验设计

ISUX Xcube智能一键生成H5

50620
来自专栏前端桃园

知识体系解决迷茫的你

最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

19440

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励