Flash也支持#define预处理

  看到as3在flex b2下已经有了支持预处理的工具...eclipse的框架就是这点好~~
其实Mike Chambers 早在去年差不多这个时候就提出来了....方法还是蛮巧妙的,说bt比较适合-__-....差不多就是用c/c++编译器,把写好的as文件滤一遍....发现老外的脑子确实动的快,这也和他们对知识的整个框架熟悉有关...唉....扯远了#_#
flash本来也就支持预处理的,比如
#include 
#initclip 
#endinitclip 第一个,用的必较多,特别是2k4以前
后面两个嘛.MX里面常用来做组件...2k4以后就淘汰了(实际上是必用的,不过我们写的时候不太用就是了)
然后像c/c++里面,其它强大的预处理功能.就没有了
最常用的就是
#define 
#ifdef 
#endif ....
现在嘛,可以用这个技巧也让as支持一把,:>

首先也去找个c/c++编译器.一般就是gnu,免费的么,这里下,30M多
http://directory.fsf.org/gcc.html
接着解压好像就能用了,还是要安装我也不清楚,反正不复杂的...我机器里面是以前装了个dev-cpp所以一起帮偶搞定了
好了应该有个bin文件夹,里面有个cpp.exe,用的就是它

了解c/c++的就方便了,和我一样不懂的也没关系,只要学会上面说到的#define,#ifdef,#endif就很有用了
比如
function Test() 

 #ifdef DEBUG 
 trace("this is a test"); 
 #endif 
} 保存文件为 test.p (后缀名基本随意) 保存到bin下面
然后cmd下
cpp -D DEBUG -P test.p test.as
后bin下面就会生成一个test.as,自己打开看看,会发现没有了预处理命令,只保留了trace
再试试
cpp -P test.p test.as
会看到trace都没了
这样子,就不会在一些程序里面老多一步无聊的 if(_global.G_DEBUG)运算了
然后#define
#define SIZE 10 
var a :Array = new Array(SIZE); 
for(var i=0; i<SIZE; ++i) 
a[i] = i; 还是老样子
cpp -P test.p test.as
会发现SIZE的地方都被10代替了..其实#define就是命令行里面的-D
如果你觉得命令行里面输入烦
就可以在之前的文件里面 #define DEBUG ,这样就可以在命令行里去掉-D DEBUG,而又程序文件来控制是否定义DEBUG
-P是告诉cpp不要在生成文件内插入行符.
还要说明,如果用cpp滤一下的话,所有注释都没了,要保留注释,需要加一个 -C
这里提到的参数都是大小写敏感的,也就是说都要大写
最后提一下,flash本身支持的3个预处理#include..巧了.cpp里面也是有的,而且作用和flash差不多,所以flash里面如果有#include的话..cpp后的生成文件会把#include的文件编译好后一起放入生成文件内
而另外两个c/c++里面没有,所以如果程序文件里面有的话,cpp会报错,不过我想现在估计不太可能再有人用了
看一下下面的范例程序,里面定义的Max实在是比较搓....如果在class里面不定义成dymanic的还会报错...这里只想说一下这么定义也是可以的=_=
#define SIZE 10 
#define Max(x,y) ((x)>=(y)?(x):(y)) 
//--- Main ---- 
var a: Array = CreateArray(); 
#ifdef DEBUG 
trace(a); 
#endif 
Bubble(a); 
#ifdef DEBUG 
trace(a); 
#endif 
//------------- 
function Bubble(a: Array): Void 

 for(var i=0; i<a.length-1; ++i) 
 { 
  for(var j=i; j<a.length; ++j) 
  { 
   if(Max(a[i],a[j]) == a[j]) // a[j] > a[i] 
   { 
    var tmp = a[j]; 
    a[j] = a[i]; 
    a[i] = tmp;  
   } 
  } 
 } 

function CreateArray(): Array 

 var arr: Array = new Array(); 
 for(var i=0; i<SIZE; ++i) 
 { 
  arr[i] = random(SIZE); 
 } 
 return arr; 

cpp -P -C test.p test.as 嗯.记得ox以前抱怨起flash没有预处理,现在好了,虽然不能说就可以像c/c++那样了.不过至少还是有很不错的表现.但估计他早去玩c++了~~~
另外如果对预处理或者cpp想了解更多的看这里
http://gcc.gnu.org/onlinedocs/cpp/

不知道这东西是不是古老了...搞不好我又做了次火星人...唉..想想人家老外一年前就提出来了,又想起来,前两天才刚知道flash里面如何支持浏览器的back button这是人家2001年就提出来的啊...真是郁闷要死
好了,无聊,睡觉去了

时间: 2024-12-03 21:05:22

Flash也支持#define预处理的相关文章

Flash MX2004支持的HTML标签

 Flash MX2004支持一些HTML标签,为我们的设计工作提供了一些方便. <b> 粗体标签 例: my_txt.htmlText="<b> Bold </b>" <br> 换行标签 例: my_txt.htmlText="Title of Articles <br>" <font> 字体标签 属性:color:字体颜色,格式#RRGGBB. face:字体,可以是单个字体或字体列表. s

iphone不是不支持flash,为什么支持actionscript

问题描述 iphone不是不支持flash,为什么支持actionscript 我一直不知道actionscript和flash的区别,求大神指点flash不是用ationscript写的吗?为什么iphone能用actionscript做开发语言 解决方案 不是iphone不支持flash,而是safari浏览器不支持. 解决方案二: 奥奥,太感谢了,大致明白了

Flex/AS3/flash player支持屏蔽右键菜单,自定义菜单,并设置相应的菜单事件(示例,图解)

Flex/AS3/flash player支持屏蔽右键菜单,自定义菜单,并设置相应的菜单事件(示例,图解) 播放器 版本 11.2以后支持右键菜单屏蔽及自定义菜单 1.更新播放器 ,11.2 以上版本 http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_3.swc http://download.macromedia.com/get/flashplayer/updaters/11/playerglob

FL2440的U-boot-2010.09移植(六)NAND Flash启动支持

 从NAND Flash启动的原理很简单,就是利用S3C2440内部4K大小的SRAM,存储在NAND Flash中的代码不能被执行,而S3C2440在从NAND Flash启动把NAND Flash的前4k代码复制到SRAM中运行,U-boot支持从NAND Flash启动的方法就是利用这前4K代码完成SDRAM的初始化(SDRAM有64M),然后还要完成从U-boot代码从NAND Flash中复制到SDRAM中,然后再跳转到SDRAM中去运行完整的U-boot.       为了便于系统启

#define 预处理指令(C++,C#,VB.NET)

在C++中,我们可以通过#define这个指令定义所谓的符号常量,这种常量会被直接编译到二进制代码中去.在这种情况下,它与用const定义的常值变量的效果是基本类似.的, 例如: 但#define还有一个作用,就是改变编译器行为,例如根据它决定是否要编译某句代码 在很多C++源文件中都会有下面这样的代码 #if !defined(AFX_MAINFRM_H__0EFEA8A4_112C_4528_B7A8_761F1B02C20C__INCLUDED_) //如果没有定义 #define AFX

盛大着力扶持Flash开发者支持原创游戏

3月19日,全球知名在线小游戏平台麻球游戏 (www.mochimedia.com) 在首届全球互动娱乐专家讲坛年会上宣布,未来一年将在"全球互动娱乐专家讲坛"的主品牌下打造顶级Flash开发者论坛"麻球游戏Flash开发者分论坛",为中国广大的Flash游戏开发者提供互动交流的创新平台,以此扶植更多的原创游戏内容,推动行业水平的整体提升. 在年会现场,盛大麻球游戏运营总监姜祖望宣布全球互动娱乐专家讲坛子论坛--麻球游戏Flash开发者分论坛成立,并对该论坛未来承担

FL2440的U-boot-2009.08移植(三)支持Nor FLASH

如果没有Nor FLASH的同学可以跳过这一章节,直接进行下一张节.如果遇到什么问题,一般都是你没有定义那个宏之类的,这个问题可以很好的额解决. 修改norflash(nor fhash型号:JS28F320)的配置,把include/configs/fl2440.h中关于"Physical Memory Map"和"FLASH and environment organization"的配置都删掉,换成下面的配置: /*----------------------

Flash MX 2004 支持的HTML标签

<b> 粗体标签 例: my_txt.htmlText="<b> Bold </b>" <br> 换行标签 例: my_txt.htmlText="Title of Articles <br>" <font> 字体标签 属性:color:字体颜色,格式#RRGGBB. face:字体,可以是单个字体或字体列表. size:字体大小,单位像素. 例: my_txt.htmlText="&

FLASH支持的几种HTML标签_Flash As

<a> 超链接标签  属性:href: 链接地址  target: 目标窗口 可取值为_blank,_parent,_self,_top.  例:  my_txt.htmlText="<a href='http://www.blueidea.com' target='_self'>蓝色理想</a>"  <b> 粗体标签  例: my_txt.htmlText="<b> Bold </b>" &l