flash as3 高度改变事件

当一个sprite子类的高度或长度改变时,会发出什么事件?... 当一个sprite子类的高度或长度改变时,会发出什么事件? 展开
 我来答
jamesge1979
2011-11-10 · TA获得超过461个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:270万
展开全部
这个问题曾经也困扰过我。楼上说,以事件进行监听的方法,我试过,不起作用。
as3中Sprite的高度和长度(width&height)似乎是两个通过算法动态计算出来的属性,而非实例本身的属性。也就是说,这两个值只有在get的时候,as3才会去计算。所以即便你创建一个基于Sprite的基类,然后覆写set方法,对其进行监听,当Sprite实例的width和height改变的时候,这个事件也未必会被触发(除非,外部直接使用set更改尺寸)。
想想,其实这也是可以理解的。因为作为一个容器来说,我们可能随时的对其addChild子容器,也可能随时改变其子容器的大小,甚至还可能改变其子容器的子容器大小,这些行为都有可能改变Sprite的长度和高度。Sprite实例不可能对以上所有行为进行监听,故而不可能将长度和高度设定为实例属性。
基于以上原因,我们最好不要利用sprite的长度和高度改变作为事件触发器。如果一定要用的话,有一种方法,勉强可以使用——自己写一个继承于Sprite的自定义容器类(假设为CustomSprite),为这个容器加入两个自定义实例属性(假设为width_c,height_c),让这两个属性的set方法disptched一个SIZECHANGED事件(注意,必须是冒泡事件),然后自身添加一个对SIZECHANGED事件的监听,当SIZECHANGED被监听到时,重新设置自身的width_c和height_c属性。最后,所有使用Sprite类创建的实例,全部改为由CustomSprite来创建。这样,一个容器内,任何一个层次内的子容器在width_c和height_c改变的时候,都会发出SIZECHANGED事件进行冒泡,上层容器都会监听到这个事件,并刷新自身的width_c和height_c属性,这就可以来监听容器高度和长度的改变事件了。
FlashASer

2011-11-05 · Animate,Photoshop,职场经验,人生感悟!
FlashASer
采纳数:14298 获赞数:18657

向TA提问 私信TA
展开全部
据我所知,应该是没有,不过可以加一个帧频事件进行监听,如果高度或长度改变则触发相应的函数就可以了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式