前端之家收集整理的这篇文章主要介绍了
Cocos2d-x Lua学习【1】基本元素的创建,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1、基本层
function GameScene:createInGameLayer()
local inGameLayer = cc.Layer::create();
return inGameLayer;
end
2、基本场景
local sceneGame = cc.Scene:create()
sceneGame:addChild(createInGameLayer())
cc.Director:getInstance():runWithScene(sceneGame)
cc.Director:getInstance():replaceScene(cc.TransitionFade:create(1,WelcomeScene.createScene()))
3、基本精灵
function createInGameLayer()
local inGameLayer = cc.Layer:create()
local bg = cc.Sprite:create("farm.jpg")
bg:setAnchorPoint(0,0)
inGameLayer:addChild(bg)
return inGameLayer
end
4、基本定时器
local function tick()
end
cc.Director:getInstance():getScheduler():scheduleScriptFunc(tick,false)
5、基本触摸事件
local touchBeginPoint = nil
local function onTouchBegan(touch,event)
local location = touch:getLocation()
cclog("onTouchBegan: %0.2f,%0.2f",location.x,location.y)
touchBeginPoint = {x = location.x,y = location.y}
-- CCTOUCHBEGAN event must return true
--[[多点
for i = 1,table.getn(touches) do
local location = touches[i]:getLocation()
Sprite1.addNewSpriteWithCoords(Helper.currentLayer,location)
end
]]--
return true
end
local function onTouchMoved(touch,event)
local location = touch:getLocation()
cclog("onTouchMoved: %0.2f,location.y)
if touchBeginPoint then
local cx,cy = layerFarm:getPosition()
layerFarm:setPosition(cx + location.x - touchBeginPoint.x,cy + location.y - touchBeginPoint.y)
touchBeginPoint = {x = location.x,y = location.y}
end
end
local function onTouchEnded(touch,event)
local location = touch:getLocation()
cclog("onTouchEnded: %0.2f,location.y)
touchBeginPoint = nil
spriteDog.isPaused = false
end
local listener = cc.EventListenerTouchOneByOne:create()
--local listener = cc.EventListenerTouchAllAtOnce:create() 多点
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED )
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
local eventDispatcher = layerFarm:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraPHPriority(listener,layerFarm)
6、基本音乐
--local bgMusicPath = CCFileUtils:getInstance():fullPathForFilename("background.ogg")
local bgMusicPath = cc.FileUtils:getInstance():fullPathForFilename("background.mp3")
cc.SimpleAudioEngine:getInstance():playMusic(bgMusicPath,true)
local effectPath = cc.FileUtils:getInstance():fullPathForFilename("effect1.wav")
cc.SimpleAudioEngine:getInstance():preloadEffect(effectPath)
local function menuCallbackOpenPopup()
-- loop test sound effect
local effectPath = cc.FileUtils:getInstance():fullPathForFilename("effect1.wav")
effectID = cc.SimpleAudioEngine:getInstance():playEffect(effectPath)
menuPopup:setVisible(true)
end
7、基本加载图片
cc.Director:getInstance():getTextureCache():addImageAsync("DartBlood.png",imageLoaded)
local texture0 = cc.Director:getInstance():getTextureCache():addImage( "Images/grossini_dance_atlas.png")
function LoadingScene.imageLoaded( pObj)
-- body
end
cc.Director:getInstance():getTextureCache():removeTextureForKey("Images/grossinis_sister1-testalpha.png")
cc.Director:getInstance():getTextureCache():removeAllTextures()
cc.Director:getInstance():getTextureCache():removeUnusedTextures()
local cache = cc.SpriteFrameCache:getInstance()
cache:addSpriteFrames("animations/grossini_gray.plist","animations/grossini_gray.png")
SpriteFrameTest.m_pSprite1 = cc.Sprite:createWithSpriteFrameName("grossini_dance_01.png")
8、基本动作
local function CallFucnCallback1()
end
local action = cc.Sequence:create(
cc.MoveBy:create(2,cc.p(200,0)),cc.CallFunc:create(CallFucnCallback1) )
grossini:runAction(action)
9、基本格式化输出字符串
string.format("grossini_dance_%02d.png",j + 1)
10、基本按钮
local start = cc.Sprite:createWithSpriteFrameName("start.png")
local startItem = cc.MenuItemSprite:create(start,start,start)
local function menuCallback(sender)
cclog("menuCallback...")
--tolua.cast(ret:getParent(),"cc.LayerMultiplex"):switchTo(1)
end
startItem:registerScriptTapHandler(menuCallback)
startItem:setPosition(50,50)
local menu = cc.Menu:create()
menu:addChild(startItem)
menu:setPosition(0,0)
layer:addChild(menu)
11、基本菜单
-- create menu
function GameScene:createLayerMenu()
local layerMenu = cc.Layer:create()
local menuPopup,menuTools,effectID
local function menuCallbackClosePopup()
-- stop test sound effect
cc.SimpleAudioEngine:getInstance():stopEffect(effectID)
menuPopup:setVisible(false)
end
local function menuCallbackOpenPopup()
-- loop test sound effect
local effectPath = cc.FileUtils:getInstance():fullPathForFilename("effect1.wav")
effectID = cc.SimpleAudioEngine:getInstance():playEffect(effectPath)
menuPopup:setVisible(true)
end
-- add a popup menu
local menuPopupItem = cc.MenuItemImage:create("menu2.png","menu2.png")
menuPopupItem:setPosition(0,0)
menuPopupItem:registerScriptTapHandler(menuCallbackClosePopup)
menuPopup = cc.Menu:create(menuPopupItem)
menuPopup:setPosition(self.origin.x + self.visibleSize.width / 2,self.origin.y + self.visibleSize.height / 2)
menuPopup:setVisible(false)
layerMenu:addChild(menuPopup)
-- add the left-bottom "tools" menu to invoke menuPopup
local menuToolsItem = cc.MenuItemImage:create("menu1.png","menu1.png")
menuToolsItem:setPosition(0,0)
menuToolsItem:registerScriptTapHandler(menuCallbackOpenPopup)
menuTools = cc.Menu:create(menuToolsItem)
local itemWidth = menuToolsItem:getContentSize().width
local itemHeight = menuToolsItem:getContentSize().height
menuTools:setPosition(self.origin.x + itemWidth/2,self.origin.y + itemHeight/2)
layerMenu:addChild(menuTools)
return layerMenu
end