都是在项目中总结的,经过实践的,在flex2 as3下使用的。
as调js
ExternalInterface.call("js函数名",参数:数组);(可以接收返回值)
js调as
as:ExternalInterface.addCallback("js中使用的函数名(字符串)", as中的函数(函数类型));
js:SWF名.js中使用的函数名(参数);
对象清理:
as中如果某个对象不被使用,且没有任何对象引用它,则此对象会被回收器回收(不一定什么时候),所以用完的对象一定要处理(比如加的监听要删除等等),否则会长占内存。
重绘:
flash中被挡住的对象也会被重绘,比如在一个位置不停的画圆,画到几百或几千层,当鼠标经过这块的时候会感觉到速度变慢,查看cpu状态会看到cpu被占满,但不会占内存。
判断对象类型:
if(a is 类型){}
获得对象类型:
trace(typeof 对象)输出对象类型
类型转化:
var a:类型 = b as 类型;
强转:
var a:类型 = 类型(b);
判断数字:
isNaN(表达式),注意是数字时返回false
Timer
不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.
private,protected,internal,public访问权限
private:只能在类本身内部访问
protected:可以由类本身或任何子类访问.
internal:可以由类本身或者相同包内的任何类访问;
public:可以在类内部访问,也可以由类实例访问
for...in与for each...in的区别
与for...in循环不同的是,for each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).
例如:var obj:Object={name1:value1,name2:value2};
for...in取出的是name,for each...in取出的是value
对象:
AS中所有对象可默认互相转换,如数组可以当作Map来用。
但是作为数组来用时,就不能保证顺序了。
比如:
var array:Array = new Array();
array["a"] = new Object();
ToolTip
如果禁止ToolTip显示,
1.this.truncateToFit = false;(不会出现...)
2.重写updateDisplayList,并最后super.toolTip = null;(会出现...)
反射:
classType = flash.utils.getDefinitionByName(className) as Class;
new classType();
格林尼治时间 格式化时出错。(如中国 时区,1970/01/01 08:00时出错,已经确认是flex的bug)
replace所有
AS中没有replaceAll 函数,要实现这个函数可以用正则表达式
如: 将 00:00:00 中的 ’:‘替换成 ‘ ‘ 可如下实现
var testStr : String = "00:00:00";
var repedStr : String = testStr.replace(/:/g, " ");
/:/g 后面的g不能少, g 表示全局
AS对象深Clone方法:
private function clone(_source:Object):* {
var copier:ByteArray = new ByteArray();
copier.writeObject(_source);
copier.position = 0;
return(copier.readObject());
}
mx_internal类型的方法也可以重载:(不推荐)
需要在import的最下面进行如下声明-
use namespace mx_internal;
as调js
ExternalInterface.call("js函数名",参数:数组);(可以接收返回值)
js调as
as:ExternalInterface.addCallback("js中使用的函数名(字符串)", as中的函数(函数类型));
js:SWF名.js中使用的函数名(参数);
对象清理:
as中如果某个对象不被使用,且没有任何对象引用它,则此对象会被回收器回收(不一定什么时候),所以用完的对象一定要处理(比如加的监听要删除等等),否则会长占内存。
重绘:
flash中被挡住的对象也会被重绘,比如在一个位置不停的画圆,画到几百或几千层,当鼠标经过这块的时候会感觉到速度变慢,查看cpu状态会看到cpu被占满,但不会占内存。
判断对象类型:
if(a is 类型){}
获得对象类型:
trace(typeof 对象)输出对象类型
类型转化:
var a:类型 = b as 类型;
强转:
var a:类型 = 类型(b);
判断数字:
isNaN(表达式),注意是数字时返回false
Timer
不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.
private,protected,internal,public访问权限
private:只能在类本身内部访问
protected:可以由类本身或任何子类访问.
internal:可以由类本身或者相同包内的任何类访问;
public:可以在类内部访问,也可以由类实例访问
for...in与for each...in的区别
与for...in循环不同的是,for each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).
例如:var obj:Object={name1:value1,name2:value2};
for...in取出的是name,for each...in取出的是value
对象:
AS中所有对象可默认互相转换,如数组可以当作Map来用。
但是作为数组来用时,就不能保证顺序了。
比如:
var array:Array = new Array();
array["a"] = new Object();
ToolTip
如果禁止ToolTip显示,
1.this.truncateToFit = false;(不会出现...)
2.重写updateDisplayList,并最后super.toolTip = null;(会出现...)
反射:
classType = flash.utils.getDefinitionByName(className) as Class;
new classType();
格林尼治时间 格式化时出错。(如中国 时区,1970/01/01 08:00时出错,已经确认是flex的bug)
replace所有
AS中没有replaceAll 函数,要实现这个函数可以用正则表达式
如: 将 00:00:00 中的 ’:‘替换成 ‘ ‘ 可如下实现
var testStr : String = "00:00:00";
var repedStr : String = testStr.replace(/:/g, " ");
/:/g 后面的g不能少, g 表示全局
AS对象深Clone方法:
private function clone(_source:Object):* {
var copier:ByteArray = new ByteArray();
copier.writeObject(_source);
copier.position = 0;
return(copier.readObject());
}
mx_internal类型的方法也可以重载:(不推荐)
需要在import的最下面进行如下声明-
use namespace mx_internal;
分类:
101~flex/flash
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2009-04-16 C# 生成js文件
2009-04-16 onmousemove与onmouseover区别