Cocos2d-x MultipleTouch & CCControllButton'(2)
来源:未知 责任编辑:责任编辑 发表时间:2013-12-18 11:33 点击:次
p>bool m_bSelected;
p>bool m_bEnabled;
p>
p>确定按键是否选中,和是否可用。
p>那么在这个情景中,我们使用 它的是否选中 这个属性,通过 virtual bool isSelected(); 方法就可以获取到这个属性的值。
p>在定时器方法中:
p>[cpp]
p>if (item->isSelected()) {
p> CCLOG("selected");
p> }
p> else
p> {
p> CCLOG("unselected");
p> }
p>
p>②然后再试一下 CCControllButton
p>
p>A)首先注意CCControllButton 中的触摸优先级是 1 ,所以 layer 注册的接收触摸事件优先级 就必须 大于等于 1.
p>下面看看为什么CCControllButton 中的触摸优先级是 1:
p>CCControllButton 是继承自:CCControl
p>在 CCControl 中的init 方法中:
p>[cpp]
p>bool CCControl::init()
p>{
p> if (CCLayer::init())
p> {
p> //this->setTouchEnabled(true);
p> //m_bIsTouchEnabled=true;
p> // Initialise instance variables
p> m_eState=CCControlStateNormal;
p> setEnabled(true);
p> setSelected(false);
p> setHighlighted(false);
p>
p> // Set the touch dispatcher priority by default to 1
p> this->setTouchPriority(1);
p> // Initialise the tables
p> m_pDispatchTable = new CCDictionary();
p> // Initialise the mapHandleOfControlEvents
p> m_mapHandleOfControlEvent.clear();
p>
p> return true;
p> }
p> else
p> {
p> return false;
p> }
p>}
p>
p>注意到了吧:
p>// Set the touch dispatcher priority by default to 1
p>this->setTouchPriority(1);
p>B) CCControllButton 中检测按键是否选中的状态 是使用 isHighlighted 方法,而不是 isSelected() .很奇怪吧!奋斗
p>在CCMenuItem 中是用 isSelected ,那么理论上,在 CCControllButton 也是类似的。
p>下面分析一下问题:
p>我们 CCControllButton 继承 CCControl ,而 CCControl 继承 CCLayerRGBA ,那么说到底,其实 CCControllButton 就是继承自
p>CCLayer。
p>那么肯定是要在 触摸事件的回调方法中 对CCControllButton的状态进行设置的。
p>可以发现:
p>[cpp]
p>virtual void setEnabled(bool enabled);
p> virtual void setSelected(bool enabled);
p> virtual void setHighlighted(bool enabled);
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>