CrossBridge

介绍

CrossBridge是Adobe FlasCC的开源版本,它提供了一个完整的C/C++开发环境,目的是把C/C++程序编译成Flash程序,运行于Flash Runtime之上。 CrossBridge前身为Alchemy,它提供了一个完整的类似于BSD的C/C++开发环境,基于GCC编译器,可以把C/C++源代码编译成目标Adobe Flash Runtimes程序。使用CrossBridge,可以把现有的大多数C/C++代码移植到Web上。

CrossBridge技术特征:

  1. 支持现有的C/C++项目文件和makefile文件;
  2. 可以通过GDB在Flash Runtime中调试代码;
  3. 可通过C++类访问完整的Flash Runtime API,包括Stage3D for OpenGL/DirectX GPU图形加速库;
  4. 可充分利用现有的C/C++库的文档、指南和代码实例;
  5. 支持使用C/C++创建ActionScript库(SWCs)

安装

  • 下载crossbridge、AIR SDK
  • 安装64位java运行环境
  • 从CrossBridge中安装Cygwin
  • 编译
    • cd 01_HelloWorld
    • make FLASCC=/cygdrive/d/crossbridge/sdk FLEX=/cygdrive/d/air_sdk
    • Launch the hello.swf file

debug

//用法:tracef("%s=%u","sizeInt", sizeInt);
#define tracef(...) {\
    size_t size = 256;\
    char cstr[size];\
    AS3_DeclareVar(tracef_str, String);\
    AS3_CopyCStringToVar(tracef_str, cstr, snprintf(cstr, size, __VA_ARGS__));\
    AS3_Trace(tracef_str);\
}

常见问题

语法

AS3_Trace

#define AS3_Trace(STR)

简单的包装器去输出字符串到flash日志文件, 你可以在这些位置找到它:

* Windows 95/98/ME/2000/XP 
    - C:\Documents and Settings\username\Application Data\Macromedia\Flash Player\Logs
* Windows Vista/Windows 7 
    - C:\Users\username\AppData\Roaming\Macromedia\Flash Player\Logs
* Macintosh OS X 
    - /Users/username/Library/Preferences/Macromedia/Flash Player/Logs/
* Linux 
    - /home/username/.macromedia/Flash_Player/Logs/

参数:STR 字符串类型 用法示例:

#include <AS3/AS3.h>

int main() {
    AS3_Trace("Hello World!"); 
}

AS3_DeclareVar

#define AS3_DeclareVar(AS3NAME, AS3TYPE) 声明在当前function的AS3变量。 参数: AS3NAME 在ActionScript变量的名称 AS3TYPE ActionScript变量的类型声明(例如:String) 用法示例:

#include <AS3/AS3.h>

int main() {
    int x = 5;
    // 定义一个as3变量,类型是Number
    AS3_DeclareVar(myAS3Number, Number);
    // 赋值给变量
    AS3_CopyScalarToVar(myAS3Number, x); 
    // 输出这个值
    AS3_Trace("myAS3Number=" + myAS3Number); 
}

AS3_CopyScalarToVar

#define AS3_CopyScalarToVar(AS3VAR, VAL) 从C复制一个值到一个AS3的局部变量 参数: AS3VARAS3变量 VAL c语言的值 用法实例:

#include <AS3/AS3.h>

int main() {
    int x = 5;
    // 定义一个as3变量,类型是Number
    AS3_DeclareVar(myAS3Number, Number);
    // 赋值给变量
    AS3_CopyScalarToVar(myAS3Number, x); 
    // 输出这个值
    AS3_Trace("myAS3Number=" + myAS3Number); 
}

AS3_GetScalarFromVar

#define AS3_GetScalarFromVar(CVAR, AS3VAR) 复制一个AS3局部变量为C局部变量 参数: CVAR C变量 AS3VAR AS3变量 用法实例:

#include <AS3/AS3.h>
#include <stdio.h>

int main() {
    inline_as3("var myAS3Number:Number = 5");

    int x;
    AS3_GetScalarFromVar(x, myAS3Number);
    printf("x=%d\n", x); // output: x=5
}

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构之路

SpringMVC + Mybatis bug调试 SQL正确,查数据库却返回NULL

今天碰到个bug,有点意思 背景是SpringMVC + Mybatis的一个项目,mapper文件里写了一条sql 大概相当于 select a from t...

3397
来自专栏GopherCoder

『简书API:Golang 处理 json 用法讲解(4):视频版』

1456
来自专栏用户2442861的专栏

Linux中的pushd和popd

其实,很早就知道pushd和popd在Linux中可以用来方便地在多个目录之间切换。那时比较浮躁,感觉切换目录没必要这么复杂。在实际中,发现通过使用pushd...

422
来自专栏知道一点点

Angularjs快速入门(二)

说说上一节的例子,$scope 我们没有创建这个对象,直接绑定就能获取里面的对象,这种风格遵循了一种叫迪米特法则的设计模式。

701
来自专栏Java与Android技术栈

基于RxJava2实现的简单图片爬虫

今年十月份以来,跟朋友尝试导入一些图片到tensorflow来生成模型,这就需要大量的图片。刚开始我只写了一个简单的HttpClient程序来抓取图片,后来为了...

772
来自专栏林德熙的博客

C#命令行解析工具

第一个方法是不需要安装任何的库,这个方法是性能很高,但是封装不好。第二个方法是使用 CommandLineParser 库,这个库提高很好的封装但是性能会比较差...

571
来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(十四)— Mongoose介绍和入门

简介   Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具   那么要使用它,首先你得装上node.js和mongodb,...

3556
来自专栏XAI

微信二次开发Java自定义菜单事件实现

微信二次开发--java http://blog.csdn.net/lyq8479/ 这个是柳峰的CSDN博客。大家可以看大神的教程。里面有所有的代码。 项目整...

4736
来自专栏Python攻城狮

Django教程(三)- Django表单Form1.Form 基本使用2.Form中字段及插件3.通过Django表单Form来完成需求4.自定义验证验证规则

创建Form类时,主要涉及到 【字段】 和 【插件】,字段用于对用户请求数据的验证,插件用于自动生成HTML;

894
来自专栏数据小魔方

动态图表系列1|数据有效性(index+match函数)

今天开始跟大家分享动态图表的技巧1——数据有效性(index+match函数)! 动态图表之——数据有效性(index+match) 首先利用数据验证制作下拉菜...

3537

扫码关注云+社区