分享
 
 
 

Flash也支持#define预处理

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

看到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年就提出来的啊...真是郁闷要死

好了,无聊,睡觉去了

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有