Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)

Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)

本篇博客介绍Cocos2d-x 3.2Lua演示样例中点击移动的样例,在这个样例你能够得到怎样创建单点触摸的事件和注冊事件监听回调方法。

演示样例代码:

--[[
ClickAndMoveTest.lua
点击与移动
]]--

-- 获取屏幕尺寸
local size = cc.Director:getInstance():getWinSize()
local layer = nil -- 层
local kTagSprite = 1 --精灵标记

local function initWithLayer()
    local sprite = cc.Sprite:create(s_pPathGrossini)

    -- 加入?颜色层,黄色
    local bgLayer = cc.LayerColor:create(cc.c4b(255,255,0,255))
    layer:addChild(bgLayer, -1)

    -- 加入?
    layer:addChild(sprite, 0, kTagSprite)
    -- 设置精灵位置到(20,150)
    sprite:setPosition(cc.p(20,150))
    -- 运行跳的动作,第一个參数为持续时间,第二个參数为位置,第三个參数为跳的高度,第四个參数跳的次数
    sprite:runAction(cc.JumpTo:create(4, cc.p(300,48), 100, 4))

    -- 背景层运行无限反复的动作序列,先淡进,再淡出
    bgLayer:runAction(cc.RepeatForever:create(cc.Sequence:create(
                                                 cc.FadeIn:create(1),
                                                 cc.FadeOut:create(1))))

    -- 触摸開始
    local function onTouchBegan(touch, event)
        return true
    end

    -- 触摸结束
    local function onTouchEnded(touch, event)
        -- 获取点击位置
        local location = touch:getLocation()

        -- 依据标记获取子节点
        local s = layer:getChildByTag(kTagSprite)
        s:stopAllActions()-- 停止全部动作
        -- 运行移动动作,移动到点击的位置
        s:runAction(cc.MoveTo:create(1, cc.p(location.x, location.y)))
        local posX, posY = s:getPosition() -- 获取精灵的位置
        local o = location.x - posX -- X轴的距离
        local a = location.y - posY -- Y轴的距离
        local at = math.atan(o / a) / math.pi * 180.0 --求角度 ,反正切函数求弧度/π*180.0
        --1弧度= 180/π, 1度=π/180

        -- 点击位置在下边
        if a < 0 then
            -- 点击位置在左边
            if o < 0 then
                at = 180 + math.abs(at)
            else
            -- 点击位置在右边
                at = 180 - math.abs(at)
            end
        end
        -- 运行旋转的动作
        s:runAction(cc.RotateTo:create(1, at))
    end

    -- 单点触摸的监听器
    local listener = cc.EventListenerTouchOneByOne:create()
    -- 注冊两个回调监听方法
    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
    listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
    local eventDispatcher = layer:getEventDispatcher()-- 时间派发器
    -- 绑定触摸事件到层其中
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)

    return layer
end

--------------------------------
-- Click And Move Test
--------------------------------
function ClickAndMoveTest()
    cclog("ClickAndMoveTest")
    local scene = cc.Scene:create()
    layer = cc.Layer:create()

    initWithLayer()
    scene:addChild(layer)
    scene:addChild(CreateBackMenuItem())

    return scene
end


Cocos2d-x有两种触摸事件,一种是单点触摸,一种是多点触摸,本篇博客样例使用的单点触摸事件。

EventListenerTouchOneByOne类

-- 单点触摸的监听器
    local listener = cc.EventListenerTouchOneByOne:create()
    -- 注冊两个回调监听方法
    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
    listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
    local eventDispatcher = layer:getEventDispatcher()-- 时间派发器
    -- 绑定触摸事件到层其中
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)

最后的一个方法绑定节点到监听器中去,触摸优先级越低的越先被触摸。同样优先级的,后加入?的先被触。

假设认为博文对您实用处,请到以下链接为小巫投上神圣的一票。

http://vote.blog.csdn.net/Article/Details?articleid=38272837

时间: 2024-10-17 01:28:54

Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)的相关文章

Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)

Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTest,这里提供GET和POST两种http请求方式,返回数据类型有下面几种: cc.XMLHTTPREQUEST_RESPONSE_STRING = 0  -- 返回字符串类型cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER = 1 -- 返回字节数组类型cc.XMLHTTPRE

最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture)

===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频播放演示样例2:GDI播放YUV, RGB 最简单的视音频播放演示样例3:Direct3D播放YUV,RGB(通过Surface) 最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture) 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV 最简单的视音频播放演示样例

内存损坏问题的演示样例及分析

原文以演示样例代码系统的讲述了三种内存损坏的情况: 全局内存.栈损坏及堆损坏, 以及它们产生的原因. 粗略整理例如以下. Global Memory Corruption 即全局变量的内存使用出了问题,主要还是越界. 例如以下代码: #include <stdio.h> #define MAX 6 int arrdata[MAX]; int endval; int main() { int i = 0; endval = 12; for (i = MAX; (endval) &&

PHPCMS中GET标签概述、 get 标签语法、get 标签创建工具、get 调用本系统演示样例、get 调用其它系统演示样例

一.get 标签概述 通俗来讲,get 标签是Phpcms定义的能直接调用数据库里面内容的简单化.友好化代码,她可调用本系统和外部数据,仅仅有你对SQL有一定的了解,她就是你的绝世好剑!也就是适合熟悉SQL语句的人使用.有了她,我们打造个性化的站点,能很方便的调用出数据库里面指定的内容.通过条件限制,我们能够调用出不同条件下的不同数据. 二.get标签样式 {get dbsource=" " sql=" "} {/get} 三.get 标签语法 1.get标签属性值

JDBC连接MySQL数据库及演示样例

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制.

java设计模式演示样例

创建模式 1.工厂方法模式(Factory Method)  将程序中创建对象的操作,单独出来处理,创建一个产品的工厂接口,把实际的工作转移到详细的子类.大大提高了系统扩展的柔性,接口的抽象化处理给相互依赖的对象创建提供了最好的抽象模式. public class TestFactoryMethod { public static void main(String[] args) { AnimalFactory af=new DogFactory(); Animal1 a=af.getAnima

展示C代码覆盖率的gcovr工具简单介绍及相关命令使用演示样例

(本人正在參加2015博客之星评选,诚邀你来投票,谢谢:username=zhouzxi">http://vote.blog.csdn.net/blogstar2015/candidate?username=zhouzxi) 近期,由于要展示某项目的单元測试的代码覆盖率.我无意间在网上找到了gcovr工具.使用之后,认为这个工具相当的不错,于是便写下这篇文章,可供相关的开发者參考. 简而言之,gcovr是一个将单元測试中的代码覆盖率以多种方式(包含列表方式.XML文件方式.HTML网页方式

Android线程池(二)——ThreadPoolExecutor及其拒绝策略RejectedExecutionHandler使用演示样例

MainActivity例如以下: package cc.vv; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import android.os.Bundle; import android.app.Activity; /** * Demo描写叙述: * 线程池(Threa

Android平台调用Web Service:演示样例

近期在学习Android,随着移动设备的流行,当软件走上商业化的道路.为了争夺市场,肯定须要支持Android的,所以開始接触了Android,只是仅仅了解皮毛就好,由于我们要做管理者嘛.懂点Android.管理起来easy些. Android学起来也简单,封装的更好了,一个个的控件,像是又回到了VB的赶脚. 以下将通过一个演示样例解说怎样在Android平台调用Web Service. 我们使用互联网现成的Webservice.供查询手机号码归属地的Web service,它的WSDL为htt