最近我在一个使用Flex的项目中工作过。它是一个照片编辑项目。我使用代码canvas.addChild(image)
拍摄了Canvas并在该画布中拍摄图像。现在我可以使用移动代码自由移动图像。图像在画布内和画布外移动。我想仅在画布内移动图像/子画面而不是外部。我怎么能这样做?
答案 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
。然后,您更改/更新verticalScrollPosition
和horizontalScrollPosition
属性,使其向后(与边界矩形相比)。
我认为如果你在画布上将clipAndEnableScrolling
设置为true,并且在其内部拖动子图像(和image.includeInLayout = true
),它应该剪切图像仅显示在画布内。但我猜你想要案例1.只是搜索这些属性,你会在谷歌上找到一些很好的例子。
兰斯