频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发工具应用教程 -> Flash教程 -> Essential Actionscript 2.0流水账

Essential Actionscript 2.0流水账

作者:未知  来源:转载  发布时间:2005-8-13 21:21:10  发布人:acx

减小字体 增大字体


看到有朋友翻译这个书,全方位支持!!!

JimLee 曾翻过一部分,大家可搜索关键词:EAS2流水账

更更希望有朋友能整理成册,方便大家使用

作者:JimLee

as2.0中的数据类型检查

晚上抽出了一点时间,开始读《Essential Actionscript2.0》,Day Day Up,呵呵,还真的要谢谢DDU,不然,猴年马月我才能读到EAS2。

前面两章(综述,对象导向的Actionscript)很一般,第三章数据类型和类型检查(Datatypes and Type checking)有些地方有点意思,记下来了:
1、会七十二变的Object
将变量、属性、函数返值、函数参数定义为Object类型,它可以被赋值为任何类型的数据,编译器不会提示错误,因为Object是所有AS类的基类(好像Delphi中的object对象喔,呵呵)例如:

var container:Object = new Date( ); // No error.
container = new Color( ); // No error.

moock提醒读者,不要过度使用该技术,从而使编译器在我们不小心调用变量、属性、函数返值、函数参数等时,无法及时发现代码中存在的错误:


var container:Object = new Date( ); // No error.
trace(container.toString( )); // 正常的执行toString方法
container.blahblahblah( ); // 调用不存在的方法,无错误
trace(container.foobarbaz); // 访问不存在的属性,无错误

事实上,Date类是没有blahblahblah()方法和foobarbaz属性,但是因为container是Object类型的实例,编译器将无法发现代码中发现的错误。
在后面,moock还提到了一个关于Object的技巧,让函数接受多种类型的参数,巧妙地实现了其他语言中的重载。
下面是moock写的实例代码:

function output (msg:Object):Void {
// 使用类型检查,从而实现不同的操作
if (typeof msg == "string") {
trace(msg);
}
if (msg instanceof XML) {
var doc:XML = XML(msg);
trace(doc.firstChild.firstChild.nodeValue);
}
}

2、水一样的null和undefined
Rest easy—unlike other values, the null and undefined types can be used anywhere, regardless of the type of container they are stored in:(原文,呵呵)

var target:MovieClip = null; // 合法
function square (x:Number):Number {
return x*x;
}
square(null); // 合法,呵呵,可是square(null)将返回什么呢?
function square (x:Number):Number {
if (x == 0) {
return null; // 合法,靠,这都可以,前面定义的函数返值可是Number类也!
}
return x*x;
}

moock打了一个比方,Object就像人类中的AB血型,可以接受任何类型;而null和undefined就像O型血,可以被任何数据类型接受,呵呵,满恰当的。
书中还举了一个使用null/undefined的场合:用来作为函数的占位符:
//你可以比较一下使用null和不使用null有什么不同
var tf:TextFormat = new TextFormat(null, null, null, true);

3、动态类
AS2内嵌了ArrayArray、ContextMenu、ContextMenuItem、Function、FunctionArguments (也叫Arguments object)、LoadVars、MovieCl、Object、TextField等动态类,可以随时为这些类的实例增加类中没有定义的属性和方法,灵活倒是灵活,可惜要谨慎使用为妙,不然,不小心写错了一个字母,查错都够你头痛的呢,:)
所以说,除非万不得已,还是循规蹈矩的好,人家诸葛亮天纵英才,都“一生唯谨慎而已”。

4、使用[]操作符的技巧

var song:Sound = new Sound( );
song.url = "track3.mp3"; // 错误

注意下面的代码

var song:Sound = new Sound( );
song["url"] = "track3.mp3";
trace(song["url"]); // Displays: track3.mp3

看来,AS2还是不那么严格,使用[]操作符可以为每个实例增加新的属性,而不管它所属的类是否已经定义了该属性,使用“.”语法则没有那么幸运,编译器会进行“严格”的检查,严格吗?难说,呵呵。

//说明:查阅帮助关于[]的说明,看到一段与[]引用有关的文字,抄录在这里帮助理解:
用法 5:您可以用数组访问运算符代替 eval 函数,从而动态地设置并获取影片剪辑名称的值或一个对象的任何属性:
name["mc" + i] = "left_corner";

5、类型检查的一些特例
(1)定义全局变量不需要声明变量类型如下所示:

_global.varname = value;
_global.author:String = "moock"; // 错误
_global.author="moock";//正确

(2)放在时间轴上某帧上的代码中,如果涉及到某个MovieClip的属性,将不会进行类型检查,例如

_root._y = "test"; // 不会提示错误,事实上类型不匹配
var msg:String = _root.getBytesLoaded( );// 不会提示错误,事实上类型不匹配

为了进行严格的类型检查,正确的方法是首先将MovieClip赋值给一个替代变量,如下例所示:

var theRoot:MovieClip = _root;
theRoot._y = "test"; // 类型不匹配
var msg:String = theRoot.getBytesLoaded( ); // 类型不匹配
var thisMC:MovieClip = this;
var x:String = thisMC; // 类型不匹配
function square(x:Number):Number {
return x * x;
}
square(thisMC); // 类型不匹配

:),可是,你喜欢这种规范的写法吗?


将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· 处理二进制数据
· 大型网站常用的五种推广..
· 通过作业调度建立SQL Se..
· IIS6.0下ASP的新增功能 ..
· Oracle 817 For Linux/U..
· 用浏览器来接收C# 的程序..
· 解决ASP脚本运行超时的方..
· 用ASP解决域名登记查询
· DW MX 设计留言本实战(4..
· 网易邮箱战略克隆Google..
· 当SQL Server数据库崩溃..
· Dreamweaver MX2004视频..
· Photoshop路径终极教程(..
· ASP+上传文件语法
· Java 6.0 操作脚本语言基..
· Flash动画制作技巧(3)
相关文章
· 在Win 2000中使用MSN..
· 在Win 2000中使用MSN..
· Andreessen预言:PHP将比Jav..
· 《 Essential ActionScript..
· 《 Essential ActionScript..
· 《 Essential ActionScript..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号