zoukankan      html  css  js  c++  java
  • cocos2d-x笔记(十一)Lua发展飞机战争-5- 让飞机动

    然后在飞机上已被添加到游戏,下一步是让它动起来。主要是为了应对触摸事件。

    在C++通过重写ccTouchBegan()、ccTouchMoved()、ccTouchEnded()三个函数来响应触摸事件。

    在Lua器中就能够了。

    1.先设置该图层能够触摸。然后注冊响应函数onTouch

    	gameLayer:setTouchEnabled(true)
    	gameLayer:registerScriptTouchHandler(onTouch)

    2.onTouch函数有3个參数,第一个是事件的类型(began、moved、ended),后面两个參数就不用多说了。

    function onTouch(eventType, x, y)
    	if eventType == "began" then   
    		return onTouchBegan(x, y)
    	elseif eventType == "moved" then
    		return onTouchMoved(x, y)
    	else
    		return onTouchEnded(x, y)
    	end
    end

    3.分别实现3个触摸事件

    local touchBeginPoint = nil
    function onTouchBegan(x, y)
    	touchBeginPoint = {x = x, y = y}
    	return true
    end
    
    function onTouchMoved(x, y)
    	if PlaneLayer.alive() and PlaneLayer.containsTouchLocation(x,y) then 
    		--local offset = ccpSub(ccp(touchBeginPoint['x'],touchBeginPoint['y']),ccp(x,y))
    		--local toPoint = ccpAdd(ccp(PlaneLayer.getPlane():getPositionX(),PlaneLayer.getPlane():getPositionY()),offset)
    		PlaneLayer.moveTo(x,y)
    	end
    end
    
    function onTouchEnded(x, y)
    	
    end



    4.在onTouchMoved函数中出现了一个没见过的函数PlaneLayer.containsTouchLocation(x,y)。这种方法用来推断想触摸点是否在飞机的位置上。

    function containsTouchLocation(x,y)
    	local planeRect = plane:boundingBox()
    	planeRect.origin.x = planeRect.origin.x - 15
    	planeRect.origin.y = planeRect.origin.y - 15
    	planeRect.size.width = planeRect.size.width + 30
    	planeRect.size.height = planeRect.size.height + 30
        local b = planeRect:containsPoint(ccp(x,y))
        return b
    end


     

  • 相关阅读:
    一步一步来
    性能管理分析
    css架构
    bootstrap栅格系统的div高度怎样定?
    有效地重构代码
    模块化开发
    性能优化和模块化
    表单只能输入数字
    SpringMVC拦截器
    整合SSM
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5039490.html
Copyright © 2011-2022 走看看