有多个c 重载与委托不匹配函数 listview;addeventlistener 参数匹配

UIListView怎样获得点击条目的索引 
我的图书馆
UIListView怎样获得点击条目的索引 
&需要对listview添加监听事件。 listView-&getCurSelectedIndex()方法返回当前被点击的索引。&&&&listView-&addEventListenerListView(this, listvieweventselector(UIListViewExTest_Horizontal::selectedItemEvent));&&&void UIListViewTest_Vertical::selectedItemEvent(Ref *pSender, ListViewEventType type)&{&&&&&switch (type)&&&&&{&&&&&&&&&case LISTVIEW_ONSELECTEDITEM:&&&&&&&&&{&&&&&&&&&&&&&ListView* listView = static_cast&ListView*&(pSender);&&&&&&&&&&&&&CCLOG("select child index = %ld", listView-&getCurSelectedIndex());&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&default:&&&&&&&&&&&&&&&&&&}&}&
TA的最新馆藏&&&&&&&&&&&
HTMLWinJSWinJS
WindowsListViewListView
q属性,用来为模板。
qnonesinglemultinonesinglemulti
qListViewObject{type:WinJS.UI.GridLayout}{ type:WinJS.UI.ListLayout}{type:WinJS.UI.GridLayout}ListView{ type:WinJS.UI.ListLayout}ListView
ListViewListView
q件,当单击数据项时。
ListViewListViewListView
divWinJS.UI.ListViewListViewdivdata-win-optionsListViewListViewbodydivdata-win-controlWinJS.UI.ListViewdata-win-optionsListView{type:WinJS.UI.GridLayout}HTML
&div id=&listviewID& data-win-control=&WinJS.UI.ListView& data-win-options=&{layout: {type: WinJS.UI.GridLayout}}&&&/div&
ListView使用addEventListenerListViewInvokeItemHandlerJavaScript
var listview = document.getElementById(&listviewID&).winC
listview.addEventListener(&iteminvoked&, InvokeItemHandler);
function InvokeItemHandler() {
    /* 在此处编写事件处理过程的代码 */
listviewIDdocumentgetElementByIdwinControlidlistviewIDlistviewlistviewaddEventListenerInvokeItemHandlerInvokeItemHandler
2HtmlControl
HtmlControluriHtmlControlListViewbodydivWinJS.UI.HtmlControlHtmlControldivdata-win-optionsHtmlControl
default.htmlIncludedPage.htmldefault.htmlbodydivWinJS.UI.HtmlControldivdata-win-optionsHtmlControluriIncludedPage.htmlHTML
&div data-win-control=&WinJS.UI.HtmlControl& data-win-options=&{uri: '/IncludedPage.html'}&&&/div&
3PageControl
PageControlPageControlPageControl
PageControlurimembersurimembersPageControl
var pageControlObject = WinJS.UI.Pages.define(uri, members);
PageControlbodydivdata-win-controldefinePageControlheadPageControlJavscript
qcenterleftrightcenter
qplacementautotopbottomleftrightauto
MenuMenuMenu
divWinJS.UI.MenuMenuJavaScriptMenuMenubodydivdivWinJS.UI. MenudividmenuIDHTML
&div id=&menuID& data-win-control=&WinJS.UI.Menu&&&/div&
MenuJavaScriptMenuleftJavaScript
var menuControl = document.getElementById(&menuID&).winC
menuControl.alignment = &left&;
MenuaddEventListenerMenuHideMenuHandlerJavaScript
var menuControl= document.getElementById(&menuID&).winC
menuControl.addEventListener(&afterhide&, HideMenuHandler);
function HideMenuHandler() {
    /* 在此处编写事件处理过程的代码 */
menuIDdocumentgetElementByIdwinControlidmenuID,并赋给变量menuControlmenuControladdEventListenerHideMenuHandlerHideMenuHandler
阅读(...) 评论()Cocos2d-x3.3Final(一) ListView常用成员函数(C++) - 操作系统当前位置:& &&&Cocos2d-x3.3Final(一) ListView常用成员函数(C++Cocos2d-x3.3Final(一) ListView常用成员函数(C++)&&网友分享于:&&浏览:0次Cocos2d-x3.3Final(1) ListView常用成员函数(C++)ListView listView = ListView::create(); --创建列表
listView-&setDirection(ui::ScrollView::Direction::VERTICAL);
--设置列表方向
listView-&setBounceEnabled(true); --设置弹力
listView-&setBackGroundImage(&cocosui/green_edit.png&);
--设置背景图片
listView-&setBackGroundImageScale9Enabled(true);
--设置是否允许九宫格
listView-&setContentSize(Size(240, 130);
--设置大小
listView-&setPosition(Vec2());
listView-&addEventListener((ui::ListView::ccListViewCallback)CC_CALLBACK_2(类名::回调函数1, this));
//注册事件处理函数
listView-&addEventListener((ui::ListView::ccScrollViewCallback)CC_CALLBACK_2(类名:回调函数2, this)); //注册事件处理函数
void 类名::回调函数1(Ref * pSender, &ListView::EventType type)&
--注意这里的参数类型
switch (type)
case cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_START:
ListView * listView = static_cast(ListView *)(pSender);
listView-&getCurSelectedIndex();
case cocs2d::ui::ListView::EventType::ON_SELECTED_ITEM_END:
ListView * listView = static_cast(ListView *)(pSender);
listView-&getCurSelectedIndex();
void 类名::回调函数2(Ref * pSender, ui::ScrollView::EventType type)
switch (type)
case ui::ScrollView::EventType::SCROLL_TO_BOTTOM:
case ui::ScrollView::EventType::SCROLL_TO_TOP:
Layout * default _item = Layout::create();
//创建模型
listView-&setItemModel(default_item); //设置模型
listView-&pushBackDefaultItem(); //添加默认元素
listView-&insertDefaultItem(index); //插入默认元素
Layout * custom_item = Layout::create();
listView-&addChild(custom_item); //添加常规元素
listView-&insertCustomItem(custom_item, index)
//插入常规元素
Vector&Widget*&& items = listView-&getItems(); //返回保存元素的容器
Widget* item = listView-&getItem(i); //获取某个索引的元素
ssize_t index = listView-&getIndex(item);
//获取某个元素的索引
listView-&removeChildByTag(1); //继承自CCNode的函数
listView-&removeItem(items_count - 1); //删除某个索引的元素
listView-&setGravity(ListView::Gravity::CENTER_VERTICAL); //设置重力
listView-&setItemsMargin(2.0f); //改变两个元素之间的边界
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有1094人阅读
游戏(19)
在游戏中,我们经常看到一些用来展示好友的列表或者展示一些道具的列表,如下图:
在这里,我们就来学学这种控件列表是如何使用的。
1.TableView
TabelView包含在cocos-ext.h头文件中,所以使用时要把它包含进来,同时声明其命名空间USING_NS_CC_EXT;
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include &cocos2d.h&
#include &cocos-ext.h&
USING_NS_CC_EXT;
class HelloWorld : public cocos2d::Layer,public TableViewDataSource,public TableViewDelegate
& & static cocos2d::Scene* createScene();
& & virtual bool init();
& & void menuCloseCallback(cocos2d::Ref* pSender);
& & //滚动的时候会调用(可选)
& & virtual void scrollViewDidScroll(ScrollView* view);
& & //缩放的时候会调用(可选)
& & virtual void scrollViewDidZoom(ScrollView* view);
& & //点击条目时回调
& & virtual void tableCellTouched(cocos2d::extension::TableView* table, cocos2d::extension::TableViewCell* cell);
& & //Cell就是每一个条目,这个函数是设置cell的大小
& & virtual cocos2d::Size tableCellSizeForIndex(cocos2d::extension::TableView *table, ssize_t idx);
& & //添加Cell,每个cell的样式通过该函数创建并且返回
& & virtual cocos2d::extension::TableViewCell* tableCellAtIndex(cocos2d::extension::TableView *table, ssize_t idx);
& & //设置Cell个数
& & virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView *table);
& & CREATE_FUNC(HelloWorld);
#endif // __HELLOWORLD_SCENE_H__
让使用TableView的类去继承TableViewDataSource和TableViewDelegate,因为这两个类是纯虚函数,所以必须去实现它们的一些函数,这些函数也是TabelView的监听函数和创建是所需的函数(例如cell大小,数目,所显示的内容),到时候给TabelView设置委托的时候,只需把this传递进去,就OK了。(学过安卓的朋友可能更加容易理解,安卓中称为ListView,创建ListView需要给他设置适配器,适配器类中的一些抽象方法由开发者自己实现,即编写自己的适配器,适配器中的方法仍然和上面一样,有设置条目数目,所显示的内容等等,开发者只需创建一个类或者让当前类去继承它并实现这些抽象函数,再把适配器对象设置给ListView就行了),所以在这里,我们的HelloWorld继承了TableViewDataSource和TableViewDelegate,本身也算得上是一个适配器了。
再来看看实现方面:
#include &HelloWorldScene.h&
#include &Hero.h&
USING_NS_CC;
Scene* HelloWorld::createScene()
& & auto scene = Scene::create();
& & auto layer = HelloWorld::create();
& & scene-&addChild(layer);
bool HelloWorld::init()
& & if ( !Layer::init() )
& & SpriteFrameCache::getInstance()-&addSpriteFramesWithFile(&pnglist/galleryLayer.plist&);
& & auto winSize=Director::getInstance()-&getWinSize();
& & //创建TableView对象 参数是TableView控件的大小
& & TableView* tableView = TableView::create(this,Size(440,winSize.height));
& & tableView-&setDirection(ScrollView::Direction::VERTICAL);//设置TableView方向
& & tableView-&ignoreAnchorPointForPosition(false);//是否忽略对锚点的设置 false为否
& & tableView-&setAnchorPoint(Vec2::ZERO);//设置锚点
& & tableView-&setPosition(Vec2::ZERO);//设置位置
& &&//设置TableView的属性&TOP_DOWN 条目从上往下添加&BOTTOM_UP条目从下往上添加
& & tableView-&setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN);
& & tableView-&setDelegate(this);//设置委托 即设置了其回调和创建相关函数
& & this-&addChild(tableView);
& & tableView-&reloadData();//更新数据
//scrollview滚动的时候会调用
void HelloWorld::scrollViewDidScroll(ScrollView* view)
//scrollview缩放的时候会调用
void HelloWorld::scrollViewDidZoom(ScrollView* view)
//条目点击事件
void HelloWorld::tableCellTouched(cocos2d::extension::TableView* table, cocos2d::extension::TableViewCell* cell)
& & //table &TableView本省
& & //cell 为被点击的条目
& & //to do some thing
Size HelloWorld::tableCellSizeForIndex(cocos2d::extension::TableView *table, ssize_t idx)//Cell大小
& & return Size(440, 187);
TableViewCell* HelloWorld::tableCellAtIndex(cocos2d::extension::TableView *table, ssize_t idx)//添加Cell
& & //获取之前的cell
& & TableViewCell* cell = table-&dequeueCell();
& & //如果为空,则创建
& & if(!cell)
& & & & cell = new TableViewCell();
& & & & cell-&autorelease();
& & cell-&removeAllChildrenWithCleanup(true);
& & Sprite* sprN
& & sprNormal-&setAnchorPoint(Vec2::ZERO);
& & sprNormal-&setPosition(Vec2::ZERO);
& & cell-&addChild(sprNormal);
//设置cell个数
ssize_t HelloWorld::numberOfCellsInTableView(cocos2d::extension::TableView *table)
& & return 5;
2.ListView
使用ListView所需头文件和命名控件
#include &cocos-ext.h&
#include &ui/CocosGUI.h&
创建ListView
void PhotoGalleryLayer::addListView()
&&&//创建ListView
& & auto listView=ListView::create();
& & //设置ListView方向 垂直
& & listView-&setDirection(ListView::Direction::VERTICAL);
& & //可触摸交互
& & listView-&setTouchEnabled(true);
& & //反弹
& & listView-&setBounceEnabled(true);
& & //大小
& & listView-&setSize(Size(445, 500));
& & //是否忽略size使用Texture size
& & listView-&ignoreContentAdaptWithSize(false);
& & listView-&setAnchorPoint(Vec2::ZERO);
& & listView-&setPosition(Vec2(0,120));
& & //监听事件
& & listView-&addEventListener(CC_CALLBACK_2(PhotoGalleryLayer::selectedItemEvent, this));
& & //创建ListView所需条目
& & /*第一参数:默认状态下图片 第二参数:选择状态下图片
& & & 第三参数:禁用状态下图片 第四参数:所用资源是plist文件还是本地图片
& & &Button::TextureResType::PLIST为plist Button::TextureResType::LOCAL为本地*/
& & Button* wood_item = Button::create(&Cell_0.png&, &CellSel_0.png&, &&, Button::TextureResType::PLIST);
& & Button* lion_item = Button::create(&Cell_1.png&, &CellSel_1.png&, &&, Button::TextureResType::PLIST);
& & Button* stone_item = Button::create(&Cell_2.png&, &CellSel_2.png&, &&, Button::TextureResType::PLIST);
& & Button* unKnow_item = Button::create(&Cell_3.png&, &CellSel_3.png&, &&, Button::TextureResType::PLIST);
& & //添加条目
& & listView-&pushBackCustomItem(wood_item);
& & listView-&pushBackCustomItem(lion_item);
& & listView-&pushBackCustomItem(stone_item);
& & listView-&pushBackCustomItem(unKnow_item);
& & this-&addChild(listView);
以上是把Button作为ListView的Item,Item可以根据你所要展示的内容自定义设置,可以是一个Layer里面包含各种控件,可以显示图片,文字等等,最后再把Layer作为Item设置给ListView。
ListView条目点击回调函数
void PhotoGalleryLayer::selectedItemEvent(Ref* ref,ListView::EventType type)
& & //开始点击
& & if(type==ListView::EventType::ON_SELECTED_ITEM_START)
& & & & auto listView=(ListView*)
& & & & //当前显示条目的下标 &从0开始,表示第一个条目
& & & & auto idnex=listView-&getCurSelectedIndex();
& & & & switch (idnex) {
& & & & & & case 0:
& & & & & & & & //第一个条目被点击
& & & & & & & &
& & & & & & case 1:
& & & & & & & &
//第一个条目被点击
& & & & & & & &
& & & & &}
效果如下图所示:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8836次
排名:千里之外
原创:18篇

我要回帖

更多关于 未找到匹配的重载函数 的文章

 

随机推荐