最近学习cocos2d-x,顺势也接触到了Lua,
这小而巧的Lua,其功能却是yi想不到的强大,
我也不做冠冕堂皇的表面文章,大家可以去尝试深入了解Lua,
而我写Lua也不过2天,还是在别人的实例上改,至于其语法写法什么的,
可能是因为之前有过些程序基础,所以......╮(╯▽╰)╭,没学多少~\(≧▽≦)/~啦啦啦,
不过在练习cocos2d-x的HelloLua的时候,对其元表有了点了解,给大家看看,
我加的一个除草功能吧,其实播种子也是此写法,因为我们项目又不用Lua了,哈哈,我也就不练习了。
1 先在我们的游戏屏幕上添点草frameCrop吧,并insert装到我们创建的table表tSpriteCrop中
-- add crop
local frameCrop = CCSpriteFrame:create(s_Crop, CCRectMake(0, 0, 105, 95))
--creat Crop table
tSpriteCrop = {};
for i = 0, 3 do
for j = 0, 0 do
local spriteCrop = CCSprite:createWithSpriteFrame(frameCrop);
table.insert(tSpriteCrop,spriteCrop)
spriteCrop:setPosition(10 + 220 + j * 200 - i % 2 * 90, 30 + i * 95 / 2)
layerFarm:addChild(spriteCrop)
end
end
2 我们再加个除草功能的按钮吧
-- add the removespriteCropmenu
local menuToolsItem = CCMenuItemImage:create(s_RemoveNormal, s_RemoveSelected)
menuToolsItem:setPosition(0, 0)
menuToolsItem:registerScriptTapHandler(removespriteCrop)
menuTools = CCMenu:createWithItem(menuToolsItem)
local itemWidth = menuToolsItem:getContentSize().width
local itemHeight = menuToolsItem:getContentSize().height
menuTools:setPosition(origin.x + visibleSize.width / 2 + itemWidth*2 + 5 , origin.y + itemHeight/2)
layerFarm:addChild(menuTools)
3 好了,看到menuToolsItem的registerScriptTapHandler消息响应函数了吗,我们再加个removespriteCrop除草函数,遍历下草把它除啦吧
-- remove priteCrop
local function removespriteCrop()
for k,v in ipairs(tSpriteCrop) do
if v:isVisible() then
v:setVisible(false)
table.remove(tSpriteCrop,k)
break
end
end
end