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工具可以在运行时查看并编辑当前可视组件的属性,大大简化界面调整的工作。

解决android studio真机调试无法打印log的问题

在Android开发过程中有的小伙伴可能会遇到真机调试无法打印日志,但却不是代码本身的问题,那么该如何解决呢?看以下几个解决方案。 1、使用真机调试的小伙伴,如果你程序打印日志然而logcat却一片...
  • m0_37451060
  • m0_37451060
  • 2017年04月25日 00:19
  • 2660

安卓调试不打印log日志解决方案

最近项目集成了一个Android的log日志库,这样显示log日志格式非常直观,请求过来的数据可以直接按照json格式显示,不用再去一大片的日志中寻找某个字段了,这里集成的是Android一个Alog...
  • lplj717
  • lplj717
  • 2017年06月28日 12:49
  • 578

ORACLE 大数据量更新表不写日志

1. 采用高速的存储设备,提高读写能力,如:EMC 和NetApp, 2. 假如tab1表中的没有数据的话 DROP TABLE TAB1; CREATE TABLE TAB1 AS SELE...
  • linghao00
  • linghao00
  • 2011年08月10日 20:58
  • 6876

Android Studio突然不显示logcat日志

参考文章:http://blog.csdn.net/victor_e_n_01185/article/details/52818809有时候,AS出现没有log的情况。一般您换了模拟器,或者使用真机的...
  • qq_32059827
  • qq_32059827
  • 2016年12月12日 19:03
  • 2086

websphere性能设置和日常维护

一、 确认磁盘空间是否满足要求 1、 WebSphere 应用服务器自身代码的占用空间。这个空间一般在1G左右,在不同的系统平台上略有差异。  2、 概要文件所占的空间。WebSphere应用服务...
  • xiangnideshen
  • xiangnideshen
  • 2013年10月30日 10:44
  • 11957

log4j日志分模块打印,同时不打印到控制台上

由于定时刷新程序的启用,导致catalina.out配置文件中打入大量日志,致使程序调试困难。          无法正常查看日志。所以客户要求将性能流量配置日志迁移出catalina.out目...
  • xiamizy
  • xiamizy
  • 2014年07月28日 10:49
  • 7064

Android开发时华为真机调试无法打印日志的解决方法

Android开发时华为真机调试无法打印日志的解决方法前段时间android开发使用我的华为荣耀6手机来进行调试,发现一直不能打印错误报告,哪怕是明显的空指针都没log出什么信息。我以为的运行环境的原...
  • wenzhi20102321
  • wenzhi20102321
  • 2017年05月05日 22:37
  • 2277

AS技巧合集「调试技巧篇」

50. 分析传入数据流(Analyze data flow to here) 描述:这个操作将会根据当前选中的变量、参数或者字段,分析出其传递到此处的路径。 当你进入某段陌生的代码,试图明白...
  • u010452083
  • u010452083
  • 2018年01月04日 10:50
  • 55

spring4 使用logback不打印日志

背景工程中使用的spring4.2.6,在web.xml配置了logback的listener加载logback配置文件,使用logback打印日志,但是启动后spring core模块使用jcl(j...
  • wangjun5159
  • wangjun5159
  • 2016年10月01日 21:01
  • 4786

Android Studio----- 无法打印---log----问题总结----华为坑深

摘要(Abstract) 必备技能,使用日志工具 LogCat,并尝试解决真机调试没有日志的问题。 日志工具(LogCat) 日志在任何项目的开发过程中都会起到非常重要的作用,在 Android...
  • copy_yuan
  • copy_yuan
  • 2016年05月20日 12:16
  • 25891
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AS技术日志
举报原因:
原因补充:

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