在一个Flash制作的图片上传程序中(使用了FileReference,但这玩意儿不能返回服务器数据),需要在as 中生成guid做为服务端文件的文件名,起初想使用js生成然后再传入flash,js生成方法如下:
但是js生成时,浏览器会弹出ActiveX控件的交互询问,不爽,但此种方式应该是生成真正的guid。
后来想,使用as生成伪guid,应该可以,这种方法虽然理论上不是完全唯一,但是重复的几率已经很少了。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:394ac5df-7259-2598-ccda-525D119C1b8b即为有效的 GUID 值,那么根据此规则,写出as的伪guid生成方法如下:
ExternalInterface是什么? ExternalInterface 类是Flash Player 8 以后提供的一个外部 API,在功能上与 fscommand()、CallFrame() 和 CallLabel() 方法相似,用来进行Javascript和Actionscript之间的通讯,这是官方推荐使用的类,相比前述三个方法,它更灵活、更通用。通过这个类,as可以调用 HTML 页的js,同时传递任何数据类型的任意数量的参数,并可以接收调用的返回值;反过来,HTML 页上的 js,也可以调用 Flash 中的 as 函数。as 函数可以返回一个值,js会立即接收它作为该调用的返回值。详细使用方法在Flash的帮助中有详细讲述。使用ExternalInterface时的"flash_id"未定义错误 但是在使用这个类时,会出现问题,你满心欢喜而去,郁闷而归,虽然问题解决了,但是心有余悸,就象吃瓜子把皮卡喉咙一样,要想使用ExternalInterface不报"flash_id"未定义(flash_id即htm中插入swf文件的Object的id),有下边三个方法:
1、加一个<form></form>在你嵌套flash的form里的<form>标记后面
2、添加如下JS在你的flash之前:
很奇怪的是,as2中竟然没有字符串的替换函数,我原以为会有个replace,可是呢,没有!
如果要替换某个字符,咋办呢?
最后找到了方法,可以这样写,虽然怪异了点,但还是很简单的:
//把全角逗号换成英文逗号 str = str.split(",").join(",");
其实就是先拆成数组,再把数组按指定的字符连接成字符串。