如何只在父母内部移动孩子?

时间:2010-02-04 06:43:26

标签: flex crop clipping

最近我在一个使用Flex的项目中工作过。它是一个照片编辑项目。我使用代码canvas.addChild(image)拍摄了Canvas并在该画布中拍摄图像。现在我可以使用移动代码自由移动图像。图像在画布内和画布外移动。我想仅在画布内移动图像/子画面而不是外部。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点:

  • 边界矩形
  • 滚动矩形(或蒙版)

假设您的“移动代码”类似于在onClick上初始化的Event.ENTER_FRAME处理程序,您想要使其无法离开父Canvas的边界。

第一种情况(边界矩形)允许您在视角内拖动图像,但始终可以看到整个图像。这就是图像裁剪器的工作方式。

要创建一个边界矩形,你必须编写一个相当详细的方法,但它背后的想法很简单。只需从画布中获取边界矩形,不要让image.x低于0,不要让image.x + image.width超出canvas.width。与高度相同。这是一个示例Image Cropper in Flex(和the source)。看看他们是如何做到这一点的。

第二种情况(滚动矩形)允许您创建更多类似于pan / zoom的容器,就像您在this Flex Pan/Zoom Map上看到的那样(这里是the source)。此外,右侧Flex Image Cropper中的大图像是第二种情况的示例,但它们没有拖动。这要求您在画布上操纵scrollRect属性的位置。 scrollRect属性是定义Canvas'“视口”的flash.geom.Rectangle。然后,您更改/更新verticalScrollPositionhorizontalScrollPosition属性,使其向后(与边界矩形相比)。

我认为如果你在画布上将clipAndEnableScrolling设置为true,并且在其内部拖动子图像(和image.includeInLayout = true),它应该剪切图像仅显示在画布内。但我猜你想要案例1.只是搜索这些属性,你会在谷歌上找到一些很好的例子。

祝你好运,应该是一个有趣的项目。

兰斯