Flash陷阱之scrollRect

偶知道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);

}



 

你可能感兴趣的:(scroll)