0

考虑下面的代码:

                package 
                {

                import flash.display.Sprite;
                import flash.display.BitmapData;
                import flash.display.Bitmap;
                import flash.events.Event; 

                public class SampleBitmap extends Sprite
                {
                public function SampleBitmap() {
                //生成两个BitmapData对象dataA, dataB
                //dataA是100×100的深绿色矩形
                var dataA:BitmapData = new BitmapData(100,100,true, 0xff669900);
                //dataB是100×100的橙黄色矩形
                var dataB:BitmapData = new BitmapData(100,100,true, 0xffFF9900);
                //分别生成三个位图显示对象
                var bitmapA:Bitmap = new Bitmap(dataA); 
                var bitmapB:Bitmap = new Bitmap(dataB);
                var bitmapC:Bitmap = new Bitmap(dataB.clone()); //将dataB复制了一份
                bitmapA.bitmapData = dataB; 
                //bitmapA:将dataB替换了dataA,此时bitmapA和bitmapB持有的都是dataB
                bitmapB.x = 200;
                bitmapC.x = 400;
                bitmapA.x = 500;
                bitmapA.y = 500;
                //加入显示列表 
                addChild(bitmapA); 
                addChild(bitmapB); 
                addChild(bitmapC); 

                trace(stage.width);
                //改变dataB的像素信息,把它中心20×20的像素都改成了红色 
                for (var i:int = 40; i<60; i++) {
                for (var j:int = 40; j<60; j++) {
                dataB.setPixel(i,j,0xFF0000);
                }
                } 
                trace(this.width);  //the output is 600
                trace(this.height);//the output is 600
                this.graphics.beginFill(0x00ff00);
                this.graphics.drawRect(0,0,this.width,this.height); //trace了一下,this.width,this.height都为600px
                this.graphics.endFill();
                }
                }
                }

结果是: 在此处输入图像描述

并且:我的问题是:为什么绿色不覆盖所有三个黄色矩形?

4

1 回答 1

1

问题出在这一行:

this.graphics.drawRect(0,0,this.width,this.height)

这里,实际上是指容器(SampleBitmap 类的实例),其宽度由您添加到其中的三个框确定。

您可能正在寻找的(假设您希望覆盖整个舞台)是:

this.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight)

在此处输入图像描述


编辑

刚刚编译了您的代码和您的声明:

            trace(this.width);  //the output is 600
            trace(this.height); //the output is 600

是假的,因为输出是 400 & 600

于 2012-12-03T09:37:18.883 回答