• 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


     

  • 相关阅读:
    Falsk的模板分配和蓝图、定制错误信息、 和补充
    Flask配置文件和 路由系统
    初始Flask
    REST Framework组件的解析源码
    MdelForm 和formset
    待修改脚本
    时间打点脚本
    Move Over and Click Link
    Wait and Click Element
    Strings=newString(“xyz”);创建了几个 StringObject?
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5039490.html
Copyright © 2020-2023  润新知