1. 程式人生 > >quick-cocos2dx lua語言講解 (動作,定時器,觸控事件,工程的類的講解)

quick-cocos2dx lua語言講解 (動作,定時器,觸控事件,工程的類的講解)

--MainScene部分

-- display.newScene 建立一個場景
--  在quick裡面我們的控制元件、精靈  一般是載入到場景上的 
local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)








function MainScene:ctor()
--建立精靈
-- local bg = cc.Sprite:create("Zombatar_1.jpg");
-- bg:setPosition(display.cx,display.cy);
-- self:addChild(bg);
    -- cc.ui.UILabel.new({
    --         UILabelType = 2, text = "Hello, World", size = 64})
    --     :align(display.CENTER, display.cx, display.cy)
    --     :addTo(self)
--display 精靈
-- local sprite = display.newSprite("bg_startgame-hd.png");-- 底層是和上述的是一樣的
-- sprite:setPosition(display.cx,display.cy);
-- self:addChild(sprite);


local sprite1 = display.newSprite("#miner_0701.png");
sprite1:setPosition(display.cx,display.cy/2.0)
self:addChild(sprite1);
--不帶# 是從檔案中找得   帶# 是從快取中查詢的
local item = cc.MenuItemImage:create("CloseSelected.png","CloseSelected.png")
item:registerScriptTapHandler(function(psender)
item:setTag(101);
print("Hello")
--print(number) --item  tag
local  GameScene = require("app.scenes.GameScene");
local scene = GameScene:new()
cc.Director:getInstance():replaceScene(scene)
--display.replaceScene(scene, "jumpZoom", 2.0)




end)
local menu = cc.Menu:create(item)
self:addChild(menu);




end


function MainScene:onEnter()
end


function MainScene:onExit()
end


return MainScene

--GameScene 部分   是從MainScene跳轉來的

local GameScene = class("GameScene",function ( )
return display.newScene()
end)


function GameScene:ctor()


--建構函式
local bg = display.newSprite("bg_startgame-hd.png")
bg:setPosition(display.cx,display.cx)
self:addChild(bg)


self.sprite = display.newSprite("100points.png")
self.sprite:setPosition(100,100)
self:addChild(self.sprite)
    --動作


self:action()
--定時器
self:scheduleDemo()
self:TouchDemo()
self:musicDemo()
end




function GameScene:musicDemo()
audio.playMusic("backMusic.mp3", true); -- 迴圈播放

end





function GameScene:TouchDemo(  )
local function onTouchBegan(touch, event)
local v = touch:getLocation();
print(v.x)
print(v.y)
-- local target = event:getCurrentTarget();
print("onTouchBegan")
return true;
end
local function onTouchMoved(touch, event)
print("Moved")
end
local function onTouchEnded(touch, event)
print("Ended")
end


local   dispatcher = cc.Director:getInstance():getEventDispatcher();
local listener = cc.EventListenerTouchOneByOne:create();
--listener:setSwallowTouches(true)
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN);
listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED);
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED);


dispatcher:addEventListenerWithSceneGraphPriority(listener, self);




end




--定時器
function GameScene:scheduleDemo()
local schedule = cc.Director:getInstance():getScheduler();
local f = handler(self, self.func)
-- function handler(obj, method)
--     return function(...)
--         return method(obj, ...)
--     end
-- end




self.id = schedule:scheduleScriptFunc(f ,0.1,false)  --0 便是每幀都呼叫
end
function GameScene:func( number )
print(self.id) -- nil
print("&&")
print(self) 
print("**") 
print(number)   --nil


local sc = cc.Director:getInstance():getScheduler();
sc:unscheduleScriptEntry(self.id); --關閉定時器
end


function GameScene:action()

--移動
local move = cc.MoveTo:create(2.0,cc.p(200,200))
--self.sprite:runAction(move)


--縮放
local scale = cc.ScaleTo:create(2.0,0.5)
--self.sprite:runAction(scale)


--旋轉
local rotate = cc.RotateBy:create(2.0, 360)
--self.sprite:runAction(rorate)
--組合
-- local  span = cc.Spawn:create(move,scale,rotate)
-- self.sprite:runAction(span)


--序列 延時
local  seque = cc.Sequence:create(move,cc.DelayTime:create(2.0),scale,rotate)
--self.sprite:runAction(seque)


--call 
local call = cc.CallFunc:create(function ( sender )
print(sender.getTag())  --101
end)


--self.sprite:setTag(101)
--self.sprite:runAction(call)
--quick 封裝的
local move = cca.moveTo(2.0, 200, 200)
self.sprite:runAction(move)


--幀動畫
local frames = display.newFrames("miner_07%02d.png", 1, 10, true)
local animation = display.newAnimation(frames, 0.1)
local animate  = cc.Animate:create(animation)
    self.sprite:runAction(cc.RepeatForever:create(animate))

end


return GameScene