About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Nov

    8

    Canvas 组件不能将 BitmapData 实例作为 backgroundImage 样式属性值,是因为在AS3中,setStyle() 和 getStyle() 方法都是基于CSS的,而CSS中只能使用URL、URI、数字、字符串、字体等值,无法使用字节数据值。而BitmapData是一种字节数据值类型,所以无法使用。

    但 Canvas 继续自 Sprite类,所以每个Canvas 实例与 Sprite 的实例一样都带有 graphics 属性实例作,graphics 属性实例因为可以使用 beginBitmapFill() 方法,所以可以将 BitmapData 间接的填充到Canvas 的 backgroundImage 样式属性中。在 beginBitmapFill() 方法中,可以使用一个Matrix类的实例矩阵变形来模似 Canvas 组件中的 backgroundSize 样式属性。

    以下为一个样例代码: 

    var canvas:Canvas=new Canvas();
    canvas.width=500;
    canvas.height=500;
    var matrix:Matrix = new Matrix();
    matrix.scale(canvas.width/bitmapData.width,canvas.height/bitmapData.height);
    canvas.graphics.clear();
    canvas.graphics.beginBitmapFill(bitmapData,matrix,true,true);
    canvas.graphics.drawRect(0,0,canvas.width,canvas.height);
    canvas.graphics.endFill();