现在的位置: 首页 > 综合 > 正文

ulua和CS之间配合对UIScrollView里面的Button绑定事件

2017年02月16日 ⁄ 综合 ⁄ 共 2480字 ⁄ 字号 评论关闭

像游戏排行榜,活动可能用到这种事件绑定方式,代码如下:

print("LuaMarketWindow.lua");

goodsperfab = nil;
GoodsGrid = nil;
MarketScrollView =nil;
function CreateMarketWindow()
	print("商城界面显示");
	local marketwindow = LoadResource.Load("marketWindow","NiuMarketWindow","HallPanel/MarketWindow/NiuMarketWindow",true);
	goodsperfab = LoadResource.Load("","goods","Prefab/goods",true);
	HallUISubPanel = GameObject.Find('Window')
	nMARKET_WINDOW = GameObject.Instantiate(marketwindow);
	--for i,v in ipairs(AllWindows) do
	--	print(i.."="..tostring(v))
	--end
	--ChangeWindow(nMARKET_WINDOW);
	GoodsGrid = GameObject.Find("GoodsGrid");
	MarketScrollView = GameObject.Find("MarketScrollView");
	print("GoodsGrid-----",GoodsGrid,MarketScrollView)
	SetGameObjectProperty(nMARKET_WINDOW,'MarketWindow',HallUISubPanel);
	
	AddMarketGoods(10);
	--UIEventListener
	--RegisterButtonClick(closebutton,CloseButtonClick)
end
--设置克隆物体属性
function SetGameObjectProperty(igameobject,iname,iparent)
	igameobject.transform.parent = iparent.transform;
	igameobject.transform.localScale = Vector3.one;
	igameobject.transform.localPosition = Vector3.zero;
	igameobject.name=iname;
	igameobject:SetActive(true);
end
--UIGrid grid = widgetpanelGrid.GetComponent<UIGrid>();
--		grid.enabled = true;
--		grid.Reposition();
		
--		GoToTop();
--GameObject friend = NGUITools.AddChild(widgetpanelGrid,widgetFriendModel);
function AddMarketGoods(goodsnum)
	for i=1,goodsnum do
		
		--local mgoods = GameObject.Instantiate(goodsperfab);
		local mgoods = NGUITools.AddChild(GoodsGrid,goodsperfab);
		mgoods.name = "goods_"..i;
		--mgoods.transform.Find("Name").GetComponent<UILabel>().text = item.Name;
		goodslabel = LuaHelper.GetComponentInChildren(mgoods,"UILabel");
		goodslabel.text = "价钱:"..tostring(i*100).."元宝";
		--RegisterButtonClick(mgoods,OnGoodsClick(i*100));
		UIEventListener.Get(mgoods).onClick =LuaHelper.VoidDelegate(OnGoodsClick(i*100));
		--print("ConstWrap",Vector2.one);
	end
	gird = GoodsGrid:GetComponent('UIGrid');
	gird.enabled = true;
	gird:Reposition();
	goodsscrollview = MarketScrollView:GetComponent('UIScrollView');
	goodsscrollview:ResetPosition();
end

function CloseButtonClick()
	ChangeWindow(nHALL_WINDOW);
end

function OnGoodsClick(i)
	print("iiiiiiiiiiiii=",i);
	return function ()
		CallBack(i)
	end
	
end

function CallBack(i)
	print("我的价格是:",i);
end

下面这段函数用到了Lua的闭包函数,

function OnGoodsClick(i)
     print("iiiiiiiiiiiii=",i);
     return function ()
         CallBack(i)
     end
end

function CallBack(i)
      print("我的价格是:",i);
end

下面是CS添加绑定事件方法

public static UIEventListener.VoidDelegate VoidDelegate(LuaFunction func) {
        UIEventListener.VoidDelegate action = (go) => {
            func.Call(go);
        };
        return action;
    }



抱歉!评论已关闭.