每天学点AS3-4

每天学点AS3-4

唯一的类变量

(本文非直接翻译,原文如下:)
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
    }
}
*新的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);

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值