cocostudio学习(UIScrollView控件内部子控件的可视化问题)



本文内容也是本人学习过程中与COCOSTUDIO开发高手Nutty的对话记录.

googleman10:57:07

Nutty先生好!按照您的指导,在使用UIScrollView时,先尽量避免使用内部子控件的删除/移动/添等操作.于是,在强调用户选择的是其中内部哪一个子项时我使用了在其前面显示一个'框'(UIImageView)的方法.
于是,在初期,仅有一个框框出默认选择的内部子项(也是UIImageView).当点击其它的子项时,把隐藏的框设置为可见.试验中,看到这样的方案基本OK;但是,当拖动UIScrollView内部的各项时,发现所有的先前被隐藏的'框'(自然是有好多个的)都显示出来.

请问:这是怎么回事?
另外:我发现在UI编辑器中设置内部子控件为不可见是不起作用的(我使用的是最新版本--v2.1.4e),但这可以通过手式方式设置不可见实现,无大障碍.

googleman10:59:07

是不是还需要手式设置类似于下面的事件:
scroll_1->addScrollToRightEvent(this,coco_ScrollToRightSelector(SetupScene::onRightScroll));
然后再在上述事件中进行手工屏蔽?请教了.

Nutty11:02:39

哦我知道了scrollview会对子节点做一个隐藏和显示的处理
你的子项和框是否同级被添加到scrollview中?

googleman11:03:33

是的,但是没有先一起放到一个PANEL中,而是直接放到这个SCROLLVIEW中的

Nutty11:04:22

建议做法是panel->addChild(子项);panel->addChild(框)然后把panel作为scrollview里的每一个子节点然后去调用框->setVisible()
后面会修复这个问题不过目前按照上述做法是可以解决问题的

googleman11:05:03

OK,看到例子中大都如此,我试试,先谢谢了

Nutty11:06:52

嗯好的不客气