如何动态更改Canvas的大小?

时间:2009-09-03 13:41:20

标签: flex flash actionscript

如果在MXML标记中设置了画布的大小,则超出画布边界的某些组件部分不会显示。如果要动态更改画布大小(canvas.width,canvas.height),画布边界几乎不存在。 如何动态更改画布的大小?

2 个答案:

答案 0 :(得分:1)

你真的需要画布吗?如果您需要改变尺寸,请尝试将您的内容放入VBox(例如任何相对容器)并使用 minWidth minHeight 进行设置它,否则,Canvas是一个组件,因此具有宽度和高度属性。

e.g。

<Canvas id="myCanvas" width="400" height="300">
<!-- content here -- >
</Canvas>

答案 1 :(得分:1)

覆盖画布的updateDisplayList函数。

override protected function updateDisplayList(w:Number,h:Number):void {
  super.updateDisplayList(w,h);
  this.setActualSize((child1.width+child2.width), Math.max(child1.height,child2.height));
}

替代方法是覆盖画布measuredHeight / measuredWidth getters。或覆盖“测量”功能。

如果您想要滚动,则您拥有画布的horizontalSCrollPolicy / verticalScrollPolicy属性。

根据您的确切问题,有很多不同的解决方案。