Flash陷阱之scrollRect
2010-07-14 16:02 hbb 阅读(2040) 评论(0) 收藏 举报偶知道scrollRect和mask是两个概念,区别有很多,但都可以当遮罩用。而且用了scrollRect后,访问“对象.width”就直接等于scrollRect.width,这点似乎要比mask好用。可这里有adobe埋下的一个陷阱在...
假设有个对象width=200,设置scrollRect的width=100后。对象的width就马上=200了吗?No!这还得分几种情况:
1、对象有没有被add到显示列表中,如果没有,对象width不受scrollRect影响。也就是一旦对象被removeChild,width马上打回原形。
2、add到显示列表后,width并不会立刻改变(程序上叫同步)。也不是大家熟悉的“下一帧”改变,而是随机的有时下一帧,有时下两帧...
以下是测试代码:
import flash.display.Shape;
import flash.geom.Rectangle;
import flash.events.Event;
var s:Shape = new Shape();
s.graphics.beginFill(0);
s.graphics.drawRect(0,0,200,200);
s.graphics.endFill();
s.addEventListener(Event.ENTER_FRAME, ef);
trace('before scrollRect width:', s.width);
s.scrollRect = new Rectangle(0,0,100,100);
trace('after scrollRect width:', s.width);
addChild(s);
function ef(e:Event):void
{
if(s.width == 100)
s.removeEventListener(Event.ENTER_FRAME, ef);
trace('enter frame width:', s.width);
}
浙公网安备 33010602011771号