I don’t discover as many bugs nowadays as I’ve used to in the old days when I was beta testing for Macromedia. But it happened today, and I’ve just installed the newest Flash Player 10.0.22.87 to be sure. It happens to DisplayObjects A inside DisplayObjectContainers B inside DisplayObjectContainer C, when
- A was not initially visible (not inside initial scroll rect of C)
- A is in 3D mode (I just change rotationY for that)
- B is in «cached as Bitmap» (cacheAsBitmap would do, I go with DropShadowFilter in the example)
- C’s scrollrect property is set, so A is shows up (well, it doesn’t – that’s the bug after all ;) Here the example:
bug-3d-shadow.swf And here the code:
/* Flash Bug - Flash Player 10.0.22.87
disappearance when 3d's parent has shadow
more info: betabong@gmail.com
*/
this.stage.scaleMode = StageScaleMode.NO_SCALE;
this.stage.align = StageAlign.TOP_LEFT;
var scroller:Sprite = new Sprite();
addChild( scroller );
scroller = this;
var filter:DropShadowFilter = new DropShadowFilter( 2 , 90 , 0 , 0.5 , 8 , 8 , 1 , 2 );
var r:Sprite,rect:Sprite;
for ( var mode:int = 0 ; mode<=1 ; mode++ ) {
for ( var i:int=0 ; i<3000 ; i+=100 ) {
r = new Sprite();
r.addChild( rect = new Sprite() );
rect.graphics.beginFill( 0xff0000 );
rect.graphics.drawRect( -40 , -40 , 80 , 80 );
rect.graphics.endFill();
rect.addEventListener( MouseEvent.MOUSE_MOVE , rotate );
if ( !mode ) r.cacheAsBitmap = true; //r.filters = [ filter ];
r.y = i + 100;
r.x = mode * 150 + 100;
addChild( r );
}
}
stage.addEventListener( Event.ENTER_FRAME , move );
var scroll:Number = 0;
function move( event:Event ) : void {
scroll += ( stage.mouseY - 100 ) / 50;
scroller.scrollRect = new Rectangle( 0 , scroll , 500 , 200 );
}
function rotate(e:*) {
e.target.rotationY++;
}
Update: Now that: it took me about 20 min to file a bug in the Adobe Bug System (which is slow as hell anyway). And when I want to submit it, I get a message saying they’d be in maintenance. Well, buggy bug systems piss me off quite a bit.