AS技术日志

转载 2013年12月05日 16:56:16

在日常开发中经常会遇到一些需要记录的技术要点与备忘,与其记在脑子里,不如写下来与列位仙家共享!(本帖为长期持续更新帖

一        在构造函数中填充Vector

Vector 类的构造函数只有一种情况:Vector(length:uint = 0, fixed:Boolean = false) ,我们无法像创建Array实例一样在创建Vector实例时指定元素,像这样的语法是不允许的:new Vector(1, 2, 3) 或 new Vector([1, 2, 3]) 。要想在创建Vector实例时指定元素,必须使用这样的语法:var v:Vector.<T> = new <T>[ T1, T2, T3, ... ]; 但,网友FlashYu所说的语法却是正确的:var v:Vector.<int> = Vector.<int>([0,1,2,3,4]); 注意了,等号右边没有关键字 new。


二        如何辨别DEBUG版本的Flash Player

在Flash Player中右击调出的菜单中存在“显示重绘区域”选项就表示为debug版本的Flash Player


三        如何在Google Chrome浏览器中使用debug版本的Flash Player

http://www.adobe.com/support/flashplayer/downloads.html下载了debug版本的Flash Player并安装后(带有Plugin content debugger (for Netscape-compatible browsers )字样的那项),打开Chrome浏览器并在浏览器地址栏中输入chrome://plugins/后将进入到Chrome浏览器的插件配置页面,在此页面中找到Adobe Flash Player一项,我们此时应该能够看到此项包含了多个插件选项,禁用地址中带有Google\Chrome\Application的那个插件,仅留下地址中存在Macromed\Flash的插件即可。每次发现在Chrome浏览器中无法调试Flash时都有必要检查一下Chrome这个畜生是否又自动启用了它自带的FP插件!


四        如何在Flash Builder中用上最新版本Flash Player新增加的API

Flash Player提供的API都存放于playerglobal.swc中,因此,要想使用最新API,我们可以下载最新版本的playerglobal.swc(在http://www.adobe.com/support/flashplayer/downloads.html页面中,每个版本的Flash Player板块里都有提供相应的playerglobal.swc下载),之后将其放到{Flash Builder安装目录}\sdks\{所用SDK版本号}\frameworks\libs\player\{flash player版本号}目录下

比如C:\Program Files\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0\frameworks\libs\player\11.5。

C:\Program Files\Adobe\Adobe Flash Builder 4.6是我Flash Builder的安装目录。 4.6.0是我AS/Flex项目编译所使用的SDK版本号,11.5是我的AS/Flex项目所需求的最低版本Flash Player版本号

之后,将你下载来的playerglobal.swc文件命名为"playerglobal.swc",多一个字少一个字都不行。最后,打开Flash Builder,找到你要开发的项目并设置该项目属性,在项目属性面板中打开ActionScript / Flex编译器标签,在右侧设置项目所用的SDK版本,项目运行所需求的最低版本Flash Player版本号,以及编辑编译器参数,指定编译器使用最新版本playerglobal.swc中提供的API,具体语法为-swf-version=13(13是Flash Player11.0的版本号,每加一个小数点就加一,我这里所用的FP版本号是11.5,所以-swf-version参数值为13+5=18)。注意,此处设置的项目属性都不是随意设置的,要严格遵循之前放置playerglobal.swc到的路径来配置,playerglobal.swc放在..\sdks\4.6.0目录中,设置的项目使用的Flex SDK版本就得指定为Flex 4.6.0;playerglobal.swc放置..\player\11.5中,就得设置项目所需求最低版本FP版本号为11.5.0……设置了前两项而不设置-swf-version这个编译器参数的话,编译时不会报错,但运行时会报错。

对于AS及Flex项目,上诉方法是有效的。但是对于AIR项目,需要另行下载对应的AIR SDK包(下载地址:http://www.adobe.com/devnet/air/air-sdk-download.html)。下载后将其解压到你项目所用SDK的目录下覆盖原先文件即可。比如,我现在开发的项目所用的Flex SDK版本为4.6.0,那么我就把下载得到的最新AIR SDK包解压到C:\Program Files\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0路径下并覆盖原先的文件即可。


五        基础类型的默认值

AS3中的基础类型有String、Number、int、uint、Boolean,它们的默认值分别是:

var str:String, bool:Boolean, i:int, ui:uint, num:Number;
trace(str);//null
trace(bool);//false
trace(i);//0
trace(ui);//0
trace(num);//NaN

虽然初始值不同,但是都可以用 if ( !obj ) 来进行判断。另外,if ( !str )这种判断还适用于str = ""(空字符串)的情况。需要注意的是,Number对象最容易出错,一般人以为Number对象的默认值为0,还有人认为给未赋过值的Number对象进行四则运算就等于对数字0进行了四则运算,但事实上,NaN进行四则运算的结果仍旧是NaN。


六        慎用as运算符

AS3中,理论上来说,Object( obj ) 和 obj as Object 这两句都代表强制类型转换,但是as运算符会在类型不同的情况下产生null的运算结果,看下面的实验代码:

var bool:Boolean = false;
var str:String = bool as String;
trace( str );//null
str = String(bool);
trace( str );//false


七        如何获知当前Flash Player或AIR的版本号

对于Flash Player来说,最简单的检测办法是在flash player区域内右击,在调出的菜单中最下方会显示出fp的版本号,格式类似于“About Adobe Flash Player xx.xx.xx”这样子。

还有一种检测方式是访问http://www.adobe.com/software/flash/about/获知你当前浏览器安装的fp版本。

要检测AIR版本号,你需要先确保你安装了AIR,然后再进入到C:\Program Files\Common Files\Adobe AIR\Versions\1.0目录下找到Adobe AIR.dll文件,右击打开菜单,选择“属性”,在文件属性窗口中选中“详细信息”标签页,查看"文件版本"。这个文件版本就表示了当前你所使用的AIR运行时的版本号


八        如何查看Flash CS中提供的位于fl包下的组件源码

进入到 {Flash Professional CS程序安装目录}\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl 目录中,可以找到全部fl组件的源码,查看源码可以便于我们修改组件的一些默认行为及进行拓展


九        在Flash release版中报“SecurityError: Error #2122: 安全沙箱冲突:xx.swf 不能访问 http://www.xx.com/x.JPG。需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志。”错误

由于Flash安全沙箱的限制,release版的.swf文件不允许加载位于不同域名下的资源(如www.iamsevent.com/1.swf这个文件不能加载到www.anywebsit.com/域名下的文件)(详细机制请查看这篇文章)。任何仅包含数据的文件是不能被加载成功的(文本文件,XML文件,二进制数据等等),而图片、声音等文件可以被加载到flash.display.Loader对象中,但你会遇到以下限制:

1.访问loader.contentLoaderInfo.content时会报“SecurityError: Error #2122”错误

2.使用bitmapData.draw(loader)时会报“SecurityError: Error #2122”错误

3.仅可以通过直接把Loader对象添加到舞台上来看到它的外观

那么为了让我们能获得完全的操作权限,不再报安全沙箱错误,我们需要做以下两步来解决:

1.在需要加载的资源所在服务器根目录上放置crossdomain.xml文件,该文件格式类似于

<?xml version="1.0"?>
<cross-domain-policy>
	<allow-access-from domain="*"/>
</cross-domain-policy>

每个<allow-access-from>标签都代表一个允许远程访问的位置,你将它的domain值设置为你.swf所放置的域名地址就行了,或者直接设置为通配符(*),表示允许外部所有站点访问它的资源。

2.设置loader.load()方法的第二个参数为一个checkPolicyFile属性为true的LoaderContext对象。如下:

loader.load( new URLRequest("http://www.iamsevent.com/UPLOAD/1.JPG"), new LoaderContext(true) );

做完这两步后这样就不会再出现讨厌的安全沙箱错误了


十        Flex项目中要调整组件位置太麻烦了,有什么简便一点的方式吗?

借助FlexSpy工具可以在运行时查看并编辑当前可视组件的属性,大大简化界面调整的工作。

相关文章推荐

'Can't add self as subview'崩溃日志详解

问题描述:这个问题非常常见,就是平时我们做一个按钮(我们假设这个页面是RootVC),按钮加一个事件,点击这个事件的时候会push出一个新的控制器A,当我们连续快速(时间间隔在0.5S内,也就是PUS...

C艹 仅以此日志帮助那些从AS3转到2dx不习惯的战友

Ctrl + , 是打开某个类 就是FB里的 Ctrl + Shift + R Ctrl + K ,+ D 是代码格式化 (先按K,再按D) 注释是 Ctrl + K ,+ C 反注释是 Ctr...

jboss-as-7.1.1.Final:(五)日志输出配置

有两个文件与JBoss的日志配置相关,以单机模式为例,在目录$JBOSS_HOME1/standalone/configuration/下,而standalone.xml为服务器配置文件,其日志子系统...

实习日志(2):AS语言面向对象的特性

学习了几个马士兵Flex视频,了解了AS语言面向对象的特性。但是由于Myeclipse和flex B的集合出现了一些问题,无法对ActionScript工程进行调试。 部分错误信息如下: !SUB...

AS+JS的Flash网站无刷新定位技术

Flash全站的技术应用—AS+JS的Flash网站无刷新定位技术 我们知道,在常规的HTML页面里头,点一般的链接,会实现页面的跳转,并且地址栏也跟着变化,用户想将某个页面加入收藏夹,下次打开就直...

利用AS3块传输技术呈现游戏元素

许多类型的游戏 ,用户体验都依赖于终端可拥有的屏幕像素和移动物体有多快。当让大量的DisplayObject对象动起来时,如MovieClip或Sprite对象,Adobe Flash Play...

转 第四章 渲染技术(2)(as3.0)

使用 beingGradientFill 创建渐变填充     下面开始学习绘图 API 的强大函数:beginGradientFill(fillType, colors, alpha, rati...

小博老师解析Java核心技术点 ——8个常见日志框架

[理论部分] 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、Web应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)