考虑以下代码:
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();
}
}
}
结果是:
和:我的问题是:为什么绿色不能覆盖所有三个黄色矩形?
答案 0 :(得分: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
为false,因为输出为400&amp; 600