0

我需要将 width 属性添加到画布。通过跟踪值 iam 将其值设为零,尽管它包含图像并且具有宽度。

//向主画布添加5个画布的代码 public function addcanvas(canarr:Array):void {

        var can_arr:Array=new Array();
        can_arr=canarr;
        for(var c:int=0;c<can_arr.length;c++)
        {

            canvasA=new Canvas();
            canvasA.id="canvasA";
            trace("ccc:"+c);
            canvasA.x=(c*10)+10;
            canvasA.y=0;2
            this.addChild(canvasA);

        }
                   trace("canvasA.width:  "+canvasA.width);
          }

接下来我会将图像添加到每个画布中

//enter code here 公共函数 ClubCards(imgarr:Array):void
{ var Gimg_arr:Array = new Array(); Gimg_arr =imgarr;

            for(var j:int=0;j < Gimg_arr.length;j++)
            {
                myimage1 = new Image();
                myimage1.x=0+(j*20);
                myimage1.y=40;
                           myimage1.source=gameModule.getStyle(Gimg_arr[j].toString());

                GroupingImageListeners(myimage1);

                canvasA.addChild(myimage1);

            trace("canvasA.width:  "+canvasA.width );
        }

我无法知道其中包含图像的画布的宽度。你能帮我吗。我怎样才能得到那个画布宽度提前谢谢你

4

2 回答 2

1

您没有使画布的大小无效。如果没有重新绘制的命令,我认为您不会得到正确的尺寸。如果没有 Event.RENDER 调度,您的组件将不会计算其大小。

也许你应该尝试:

canvas.invalidateSize();

在访问其宽度并查看结果之前。这应该让你的画布调用它的方法 measure() 并计算它的大小。

于 2013-09-10T11:35:56.233 回答
1

我无法添加评论,因此我将添加一个答案,说明此代码应由调用 updateDisplayList 方法触发(在 flex 组件生命周期的适当阶段)。我建议在进行任何进一步的 Flex 开发之前阅读并理解此更新周期(从长远来看,它将为您节省大量时间)。

更多信息可以在这里找到: http://livedocs.adobe.com/flex/3/html/help.html?content= ascomponents_advanced_2.html

更新

既然你提到了 Canvas,我更新了链接指向文章的 3.x 版本

于 2013-09-10T23:32:23.943 回答