您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx lua语言讲解 (动作,定时器,触摸事件,工程的类的讲解)

2018-03-20 14:07 543 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: