天天看點

cocostudio學習之有關UIScrollView控件的一個問題

我現在有一個場景,使用UI編輯器建立而成,其中包含三個UIScrollView控件。第一個UIScrollView控件中包含大約12個子控件 UIImageView,第二個UIScrollView控件中包含大約16個子控件UIImageView,第三個UIScrollView控件中包含 大約32個子控件UIImageView。上述每一個UIScrollView控件内部的子控件UIImageView根據需要進行覆寫顯示。對于前面兩 個内容較少的UIScrollView控件,操作正常。對于第三個UIScrollView控件則顯示不正常。我左右拖動其中的子控件時出現顯示亂套現 象。例如,我使用如下代碼:

1

2

3

4

5

<code>  </code><code>UIImageView* currentDesk = dynamic_cast&lt;UIImageView*&gt;(pObject);</code>

<code>    </code><code>UIScrollView* scroll_3 = dynamic_cast&lt;UIScrollView*&gt;(currentDesk-&gt;getWidgetParent());</code>

<code>    </code><code>UIImageView* desk_mask = dynamic_cast&lt;UIImageView*&gt;(scroll_3-&gt;getChildByName(</code><code>"desk_mask"</code><code>));</code>

<code>    </code><code>CCPoint pos=currentDesk-&gt;getPosition();</code>

<code>    </code><code>desk_mask-&gt;setPosition(pos);</code>

實作:當點選其中某一幅圖檔時,有一個已經添加到上述UIImageView控件中的方框圖檔控件(其預設位置置于第一個圖檔之上)會置于其上,以顯示使用者目前選擇的是這一幅圖檔。

我感覺上述思路沒有什麼不正常的。另外,在圖檔相應的點選事件中,除了顯示上述方框圖檔控件外還有其他的代碼需要執行(暫時被我屏蔽了)。

執行上述代碼,對于兩個内容少的UIScrollView控件一切正常,但對于最後一個内容較多的UIScrollView控件,即顯示亂套矣!

特别請教上述問題,謝謝了。

回答:

問題是這樣的 目前scrollview有個缺陷 如果是子控件添加進scrollview後 又對子控件的position進行了操作 就會導緻scrollview滾動不正常問題,因為scrollview在addchild時會根據子節點的位置資訊做一些scrollview屬性的處理,這個問題後面會優化 目前的使用方式建議是在scrollview addchild之前設定好子節點的位置 add完畢後就不要對子節點的位置進行操作了。

謝謝!但是,我的scrollview中有N幅圖檔,想實作玩家點選一幅圖檔時,上面蓋一個“框”,那麼這個框對應的image控件目前隻好先放到整個scrollview控件的外面(上面),是不是?

最好就是“框”是個imageview 圖檔是個imageview 兩個imageview添加到一個panel中 框先設定為不可見 把這個panel當作scrollview中的單元子幾點放到scrollview中

點選圖檔的時候把框顯示出來。

或者,您是不是說,隻要不修改内部控件的位置,把其中IMAGE控件的某些其他屬性修改一個(目的是為了顯式指出玩家選擇的是它),這樣是可以的?

是的 除了位置屬性 其他所有屬性都可以設定 visible scale rotation等

非常感謝!我試試!

本文轉自朱先忠老師51CTO部落格,原文連結:http://blog.51cto.com/zhuxianzhong/1439719 ,如需轉載請自行聯系原作者