用这篇文章来专门收集一些ActionScript不为人知,抑或是不常见的一些技巧或问题。希望对大家有所帮助!
这些技巧包括我的分析所得和网上收集。如有不正确或冒犯之处,还请指出。
这篇文章本人亦会不断更新和修正。
1. TextFormat.URL
很多人都知道使用textField.htmlText来写超文本的方式,可是似乎很少人知道其实我们还可以使用TextFormat.URL来定义。
1 : myFormat = new TextFormat();
2 : myFormat.url = "http://www.liu21st.com";
3 : my_txt.html = true; //这是必须的
4 : my_txt.htmlText = "世纪流年";
5 : my_txt.setTextFormat(myFormat);
2. 使用Javascript方法
通常trace方法的浏览器替代方法可以使用
1 : function debug(info){
2 : getUrl("j avascript:alert('" + info + "')");
3 : }
如果使用超文本链接的话,可以直接使用
my_txt.html = true;
my_txt.htmlText = "<a href=j avascript:alert('欢迎光临世纪流年!')>世纪流年</a>";
3. 复制数组
如果使用下面的复制数组的方法只是一个指向,并没有形成真正的拷贝。
1 : b_array = a_array;
2 : //当a_array数组内容改变的时候,b_array的内容也随之改变了
3 : //解决方法可以使用下面的方式
4 : b_array = a_array.slice();
4. 卸载拖入舞台的MC
我们知道只有动态创建的mc才可以使用removeMovieClip()方法来卸载,帮助中对removeMovieClip方法的说明如下:
引用:
删除用 duplicateMovieClip()、MovieClip.duplicateMovieClip() 或 MovieClip.attachMovie() 创建的影片剪辑实例。
|
下面的技巧可以让我们随心所欲的卸载你需要的MC,即使是你拖入舞台的组件等。
1 : My_mc.swapDepths(100);//把mc的深度值设定为大于0的值
2 : My_mc.removeMovieClip();//这样就可以正常卸载mc了
是不是很有用哦。
PS:使用my_mc.unloadMovie() 以可以删除mc实例,但是却保留了实例属性和剪辑处理函数。用removeMovieClip() 可以删除实例(包括其属性和剪辑处理函数)。
Update:flash中只能用removeMovieClip()删除0 到 1048575 深度的MC,所以swapDepths()方法的数值必须是在0 到 1048575 之间(包含0 和 1048575 )。
5. 魔法深度值–16384
我们知道Flash中的元素使用深度的概念,所有创作中的元素都从 -16383 开始,所以如果我们要让某个元素显示在最底层的话,可以把深度设定为魔法深度值。
其中原因我们不妨深究下:
原来Macromedia's mx.managers.DepthManager 类中定义了下面的值:
1 : // highest allowed depth is reserved for tooltips and cursors
2 : static var reservedDepth:Number = 1048575;
3 : // highest depth for all other objects
4 : static var highestDepth:Number = 1048574;
5 : // lowest allowed depth
6 : static var lowestDepth:Number = -16383;
7 : // lowest depth plus this number of layers is reserved
8 : // for statically placed content
9 : static var numberOfAuthortimeLayers:Number = 383;
这下就应该明白个中原因了吧~
6. 检测播放版本和系统信息
有三种方法来检测:
1. 使用getVersion方法
2. 使用$version 变量
3. 使用System.capabilities.version属性
PS:System.capabilities.os 可以获取本机的操作系统
7. 取消TextArea组件中鼠标滚动文本
要取消通过鼠标滚动文本的方法添加下面代码
1 : componentInstance.label.mouseWheelEnabled = false;
2 : Mouse.removeListener(_global.__SVMouseWheelManager);
TextField也可以使用类似的方法,把第一行代码该为:
1 : my_txt.mouseWheelEnabled = false;
8. 设置TextArea组件的滚动条到底部
我们知道textField使用scroll属性设定滚动位置,但是TextArea组件使用vPosition属性来设置垂直滚动位置,下面的代码使得滚动条处于文本区域的底部:
1 : myTextArea.vPosition = myTextArea.maxVPosition;
9. 对影片剪辑采用手行光标显示
当鼠标滑过任何MC或按钮时设置显示手形光标
方法:
1 : my_mc.useHandCursor = true;