FlasCC例子研究之Animation
上几个例子向我们展示了,如何在main()函数里用C++和AS3进行交互。 但是,如果我们想在C++中实现一些动画效果(循环播放的),怎么办呢? AS3是单线程的,所以,我们不可能说放一个while(true)在main函数里。因为这会把Flash Player的线程阻塞,所有的图像,声音和输入就都不能被处理了。
所以,我们需要组织我们的代码,然后每帧进行调用。 这就需要用到enter frame或者timer事件。 这个示例就替换了默认的console实现, 而增加了一个enter frame处理器,来调用函数。
例子中的console.as这个AS文件,是本例子的实现,FLASCC内部有一个默认实现,用于处理一些输出,比如printf等。 根据不同的需要,可以像本例一样,替换这个console.as文件。从而实现自己的功能。
打开Console.as,你可以在Console的构造函数中发现一个叫CMoulde.startAsync的函数。这是一个帮助函数,它会调用main函数。 在继续讲一些内容之前,需要注意以下两个特点
1、在main函数运行之前,所有的C++静态变量(基础类型)会先运行并初始化
2、而在main函数运行时,C++中的静态构造函数会运行。一些静态全局实例
上面的两点很重要,因为在使用FLASCC将代码编译为SWC库,或者想要驱动一个动画时,main函数在返回时,不能执行上面两种代码的析构函数。 为了防止析构执行,我们在main函数结尾处抛出一个AS3异常,通知AS3。
在GameOfLife.cpp最后一行,可以发现 AS3_GoAsync(); 这个调用,它就是干这个事情的。
在GameOfLife.cpp中,你会发现一个叫updateUniverse的函数,它被标记为了 extern “C”. 这个是防止C++编译器对它的名字进行改动(C++因为支持函数重载,所以会把函数名加上一些标记,标记为C函数后,则不会做此改动)。 这样,AS3代码想调用这个函数的时候,才能够在符号表中,通过名字正确地找到它。 (不过,下一个例子你可以使用另外的方式来控制C++代码向AS3导出的名字,也就是说,你可以自己指定一个名字)。
让我们回到Console.as,我们还可以发现一个叫frameBufferBlit的函数。 这个函数就是enter frame事件的处理函数,在这个函数里,使用了一个叫getPublicSymbol的函数。 用脚也能想到了,这个函数肯定是拿来查找C/C++函数的了。 果不其然,可以发现,它查找的正是前面说到的updateUniverse
函数。
最后,简单总结一下,要在FLASCC中实现你自己的主循环,你需要做下面的事。
1、替换Console.as,改为一个带enter frame或者timer的版本。
2、在Console构造函数中使用startAsync函数,在main函数结尾使用AS3_GoAsync()
3、使用CModule帮助函数调用你的更新函数。
另外,这个例子也向我们展示了AS3代码和C++代码混编的方法。 参考04_Animation中的Makefile可以知道,需要结合编译,得先将AS3代码编译为abc,然后再使用 -symbol-abc 参数一起编译。
这个例子收获较多啊。上个图吧。以作纪念。
作者:码瘾少年·麒麟子
出处:http://www.cnblogs.com/geniusalex/
蛮牛专栏:麒麟子
简介:09年入行,喜欢游戏和编程,对3D游戏和引擎尤其感兴趣。
版权声明:本文版权归作者和博客园共有,欢迎转载。转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载:http://www.cnblogs.com/geniusalex/archive/2013/05/17/3082983.html
FlasCC例子研究之Animation相关推荐
- FlasCC例子研究之Drawing补充
这个例子是建立在上一个interop示例的基础上的,这个例子演示了一些更复杂的交互.(绘制到舞台). 这个例子由两个CPP文件组成,所以,可以去看它的makefile文件,看它们是如何用G++打包的( ...
- FlasCC例子研究之hellointerop
例子中的注释已经很详细了,我觉得逐行翻译一下,就完全可以体现出此例子的意义 #include <stdio.h> #include <string.h> #include &q ...
- Mule 官方例子研究
Mule 官方例子研究 一.编译导入Mule自带的例子 1.准备 安装Mule.这里就不介绍mule的安装了,请参考<Mule安装部署手册>. 2. 编译Mule自带例子中的Hello例子 ...
- linux mule,Mule 官方例子研究(2)
Mule 官方例子研究(2) 日期:2011-10-28 点击:169 来源: 未知 分享至: exchange-pattern=\"request-response\"> ...
- CORE ANIMATION的学习备忘录
CORE ANIMATION的学习备忘录(第一天) 研究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性 ...
- Skeletal Animation(骨骼动画)
Skeletal Animation(骨骼动画) 有关骨骼动画的东西都放在这里好了. http://en.wikipedia.org/wiki/Skeletal_animation Skeletal ...
- Android Animation之ScaleAnimation用法详解
ScaleAnimation用法详解 ScaleAnimation是Animation的子类,其有四个构造方法: 1.public ScaleAnimation(Context context, At ...
- 【好程序员笔记分享】——UIView与CALayer详解
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ UIView与CALayer详解 研究Core Animation已经有段时间了,关于Core Animati ...
- calayer 与uiview
研究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人,其 ...
最新文章
- 霍夫变换(直线检测、圆检测)
- [Logstash-input-redis] 使用详解
- 安装完Ubuntu桌面后要做的(待续)
- 岗位多多,招聘 23人 | 中国农业科学院深圳农业基因组研究所诚聘博士后和科研人员...
- HDU 5975 2016ICPC大连 E: Aninteresting game(树状数组原理)
- 最新免费计算机编程视频教程
- TP5路由知识简单个人汇总
- 用Python写的简易PDF阅读器
- 引导从打游戏到学计算机,【润笙学堂】暑假孩子沉迷游戏?妈妈一招化解!
- 一键获取graphpad同款主题
- Gym 102028D Keiichi Tsuchiya the Drift King(2018 ICPC 焦作站 D 题) 计算几何
- 手机屏幕常见故障_iPhone手机一些比较常见的维修故障分析
- 行业内参:2019年支付监管框架将有大调整 线上线下牌照合并重划
- 关于htons和htonl
- 中庸----做人的智慧
- LPC2294对片外EEPROM(24C04)进行读写操作,如何确定24C02EEPROM地址
- 2014年AVAYA IP Office 合作伙伴大会在北京举行,协作成长,乐在德云
- 在这里慢慢积累一些单词的记忆方法
- 在国内的现货白银生存要具备的心态
- 电机可以用到计算机应用吗,电机与控制应用是核心期刊吗_核心期刊_2018中国医学类核心期刊一览表...