2010-02-04 43 views
0

最近我在一個使用Flex的項目中工作。它是一個照片編輯項目。我使用了畫布,並使用代碼canvas.addChild(image)在該畫布中拍攝了一張圖片。現在我可以通過使用移動代碼自由移動圖像。圖像在畫布內和畫布外移動。我只想在畫布內移動圖像/孩子,而不是在外面。我怎樣才能做到這一點?如何才能將孩子只在父母內部移動?

回答

1

有兩種方法可以做到這一點:

  • 邊界矩形
  • 滾動矩形(或面罩)

假設你的「移動代碼」有點像初始化的Event.ENTER_FRAME處理器onClick,你想使它成爲圖像不能離開父Canvas的邊界。

第一種情況(邊界矩形)將允許您拖動圖像內的圖像,但您將始終能夠看到整個圖像。這是圖像裁剪器的工作原理。

要創建一個邊界矩形,您必須編寫一個相當詳細的方法,但其背後的想法很簡單。只需從畫布中獲取邊界矩形,並且不要讓image.x低於0並且不要讓image.x + image.width超出canvas.width。與高度相同。這裏有一個樣本Image Cropper in Flex(和the source)。看看他們是如何做到的細節。

第二種情況(滾動矩形)可以讓您像this Flex Pan/Zoom Map(此處爲the source)所示的那樣創建更多的像平底鍋一樣的容器。此外,右側的Flex Image Cropper中的大圖像是第二種情況的示例,但它們沒有拖動。這就要求你在畫布上操作scrollRect屬性的位置。 scrollRect屬性是定義Canvas'「視口」的flash.geom.Rectangle。然後您更改/更新verticalScrollPositionhorizontalScrollPosition屬性,因此它是向後的(與邊界矩形相比)。

我認爲如果您在畫布上將clipAndEnableScrolling設置爲true,並且在其內部拖動一個子圖像(和image.includeInLayout = true),它應該剪切圖像以僅顯示在畫布內。但我猜你想要案例1.只要搜索這些屬性,你會發現一些很好的例子在谷歌。

祝你好運,應該是一個有趣的項目。

蘭斯