zoukankan      html  css  js  c++  java
  • cocos代码研究(25)Widget子类PageView学习笔记

    基础理论

    ListView控件是一个显示滚动项目列表的视图组。 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView。

    代码实践

    static ListView * create()
    创建一个空ListView。

    void setItemModel (Widget *model)
    设定一个ListView的模型。 当调用pushBackDefaultItem,该模型将作为一个蓝图,新副本将被插入到ListView控件。

    void pushBackDefaultItem ()
    插入一个默认项(通过克隆模式创建)到ListView的尾部。

    void insertDefaultItem (ssize_t index)
    插入一个默认项(通过克隆模式创建)到ListView的指定位置。

    void pushBackCustomItem (Widget *item)
    插入一个自定义项到ListView的尾部。

    void insertCustomItem (Widget *item, ssize_t index)
    插入自定义窗口小控件到ListView中指定索引处。

    void removeLastItem ()
    删除ListView最后一个项目

    void removeItem (ssize_t index)
    在给定索引处删除一个项目

    void removeAllItems ()
    删除当前ListView中的所有项目。

    Widget * getItem (ssize_t index) const
    返回一个给定的索引处的项目。

    Vector< Widget * > & getItems ()
    返回ListView中的所有项目。

    ssize_t getIndex (Widget *item) const
    返回指定窗口小控件的索引。

    void setGravity (Gravity gravity)
    设置的ListView引力。

    void setItemsMargin (float margin)
    设置ListView中每一项之间的边距。

    float getItemsMargin () const
    查询ListView每个项之间的边距。

    ssize_t getCurSelectedIndex () const
    查询当前选中控件的索引。

    void addEventListenerListView (Ref *target, SEL_ListViewEvent selector)
    添加ListView点击事件的回调,ListView中的一个项目被点击将会调用回调函数。

    void addEventListener (const ccListViewCallback &callback)
    添加ListView点击事件的回调,ListView中的一个项目被点击将会调用回调函数。

    void requestRefreshView ()
    手动刷新view和ListView的布局。 该方法将列表视图内容标记为dirty,内容视图将在下一帧刷新。

    void refreshView ()
    更新ListView的视图。

    实例:

            // Create the list view ex
            ListView* listView = ListView::create();
            // set list view ex direction
            listView->setDirection(ui::ScrollView::Direction::HORIZONTAL);
            listView->setTouchEnabled(true);
            listView->setBounceEnabled(true);
            listView->setBackGroundImage("cocosui/green_edit.png");
            listView->setBackGroundImageScale9Enabled(true);
            listView->setContentSize(Size(240, 130));
            listView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f +
                                        (backgroundSize.width - listView->getContentSize().width) / 2.0f,
                                        (widgetSize.height - backgroundSize.height) / 2.0f +
                                        (backgroundSize.height - listView->getContentSize().height) / 2.0f));
            listView->addEventListener((ui::ListView::ccListViewCallback)CC_CALLBACK_2(UIListViewTest_Horizontal::selectedItemEvent, this));
            listView->setScrollBarPositionFromCorner(Vec2(7, 7));
            _uiLayer->addChild(listView);
    
            // add custom item
            for (int i = 0; i < count / 4; ++i)
            {
                Button* custom_button = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png");
                custom_button->setName("Title Button");
                custom_button->setScale9Enabled(true);
                custom_button->setContentSize(default_button->getContentSize());
                
                Layout* custom_item = Layout::create();
                custom_item->setContentSize(custom_button->getContentSize());
                custom_button->setPosition(Vec2(custom_item->getContentSize().width / 2.0f, custom_item->getContentSize().height / 2.0f));
                custom_item->addChild(custom_button);
                
                listView->pushBackCustomItem(custom_item);
            }
  • 相关阅读:
    unity IOC 的使用
    Senparc之OAuth原理
    改进的日志记录类
    发一个 Nuget打包发布小工具
    贴一个微信小程序跳一跳辅助
    调用API让声卡发出声音
    控制台彩色输出
    C#调用cmd实现自我删除
    一个适合新手的简易计算器
    简单Console进度条
  • 原文地址:https://www.cnblogs.com/damowang/p/4865205.html
Copyright © 2011-2022 走看看