Flex編程注意之clipContent

在做Flex項目的時候,碰到了一個修改,具體請看下面的原型圖:
 
 
 
在做Flex項現在需要的一個這樣的方式,用鼠標對C進行Drag操作。使它可以在A中任意移動,但是由於C是包含在B中,因此使用startDrag() 和 stopDrag()的時候,只能在B區域中進行移動,而無法超出B的邊界。
如果我們想讓C在A中移動的話,那麼就應該使用一個叫做clipContent的屬性了。
以下是這個屬性的定義:
Whether to apply a clip mask if the positions and/or sizes of this container's children extend outside the borders of this container.
它的中文含義大致是:
如果此容器的子項的位置和/或大小擴展到此容器的邊框之外,是否應用剪裁遮罩。
clipContent值:
True:當子項目的邊界超出此容器時,不顯示子項目在此容器中。
Flase:當子項目的邊界超出此容器時,顯示子項目在此容器中。
clipContent是Container中的一個public propertie。因此Flex常用的一些容器類控件:
Accordion, Box, Canvas, Form, FormItem, LayoutContainer, Panel, Tile, ViewStack 全部都可以使用這個屬性。
即我們在B中,設定clipContent = false,這樣就可以實現我們的要的效果了,當C在移動的時候,如果遇到了D,則會在D的下面,那麼這是怎麼回事呢?
因爲在coding這個結構的時候,D的z-index就比B的高,因此C移動的時候,會被D遮擋住(雖然C可以在A中任意位置進行移動)
所以我們做如下的設定:
將B的z-index,放置到D的z-index上面即可。而我們使用的方式就是:setChildIndex(這個method是很常用的,因此我就不在這裏進行復述了。)
因此如果在一個很複雜的嵌套的容器中,如果要移動其中一個子容器在最外層容器中時,應作如下的設定:
1、將要移動的子容器的父容器(當然這個父容器之上可能還會有父容器的)要在需要移動容器中處於最上層顯示。
      例如:A → B → C → D → E
                  F→ G → H 
      如果想要移動E在A中,那麼就需要B在F的上面,即使用setChildIndex來重新設定B與F的位置。
2、需要將D容器的clipContent設定爲false。
以上,希望會對大家有所幫助:)
目的時候,碰到了一個修改,具體請看下面的原型圖:

本文出自 “我的博客” 博客,請務必保留此出處http://wonlen.blog.51cto.com/939068/204636

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章