从基础着手深化学flash as3教程(3)(译文)

更新时间:15-10-24 12:01 热度:470
 

类型改换和as操作符
as准许在需求的时刻,将对象的类型改成额外一种般配的类型,这就是类型改换。as2和as3都支持经过像“type(object)”这么的形式施行类型改换。例如,现定义一个数值类型为object,你可以经过运用类型名字的语法将这个数值改换成额外一种数值类型。如:

var obj:object = getmycustomobject();
vay customobj:myclass = myclass(obj);
as3引入了一种新的操作符“as”来施行类型改换。as操作符接替了类型名字语法来变更对象的数值类型。如:

var obj:object = getmycustomobject();
vay customobj:myclass = obj as myclass;
as操作符的办公形式和as2中的很大致相似。假如改换没可能施行,那末改换的回返值是门里出身。
as3依然支持经过type(object)的形式来改换类型,不过,这种形式和曾经有一点儿微小的不一样。曾经改换败绩是回返门里出身,如今改换败绩后将抛出一个类型不正确(typeerror)。当试验改换两种对立的数值类型的时刻便会败绩。例如将一个数值类型改换成额外一个没可能经过联手和秉承而获得的类型。
注意:as上的整个的局面:胸怀~改换办法class(object)的优先级依然高于type(object)改换办法。这些个办法涵盖string(),number(),和array()等。
7,惟一的类变量

(本文非直接移译,原文如下所述:)
in actionscript 2, variables defined within a class’s body were defined in the class’s prototype object. this was an efficient means to handle variable definitions but it also meant that complex data types (such as arrays) had a tendency to be "shared" among instances if not explicitly defined for instances within the class constructor. this is no longer a problem with actionscript 3. class variables defined in the class body are now unique to each class instance so this problem no longer occurs.
在as2中,复杂数值类型(比按原来的数目组),假如在类体当中,办法以外直接起初化,而不在建构器中起初化,会被了解为“共享”的数值,而被全部的实际的例子共享运用(大致相似于static的效果)。不过在as3中不存在这个问题。类变量是每个实际的例子独有的,惟一的变量。如下所述:

class myclass{
private var list:array = [1,2,3]; //在as2中会有一定问题,as3中就美好
public function myclass(){
//在as2中,应当在这处起初化list
}
}
8,新的mousemove行径
mousemove行径在as3中有所变更。曾经,mousemove动作是一个整个的局面:胸怀~概念,也就是说无论鼠标在flashmovie的不论什么一个地方,只要移动了,便会被触动引发不论什么一个movieclip的mousemove行径。
在as3中,mouse对象不再用来分派(dispath)鼠标行径。对于mousemove行径来说,你应当监听一个interactiveobject的实际的例子,譬如sprites,movieclip和stage。所以,你有可能需求运用interactiveobject来接替mouse接关进监牢听。 对于每一个interactiveobject实际的例子,mousemove行径只在这个对象的存在的地方范围内执行。假如你要运用整个的局面:胸怀~的mouse事情监听,则需求对stage添加监听。
因为这个,在运用mousemove来拖动一个对象的时刻,当你的鼠标离去的摆脱对象,对该对象的mousemove事情便会失去效力,拖动效果也就同时实际效了。这个时刻,你有可能需求对stage添加move行径来施行监听:

stage.addeventlistener(mouseevent.mouse_move, dragmyobject);