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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值