智捷社区

查看: 3163|回复: 1

cocos2d-x lua卷 第八章 用户事件例子有问题

[复制链接]

2

主题

3

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2016-1-10 20:26:49 | 显示全部楼层 |阅读模式
书本第152~143
例子:8.1.3
代码如下:
  1. function GameScene:createLayer()

  2.     local layer = cc.Layer:create()

  3.     --贴图的纹理图片宽高必须是2的n次幂,128x128
  4.     local bg = cc.Sprite:create("BackgroundTile.png", cc.rect(0, 0, size.width, size.height))
  5.     --贴图的纹理参数,水平重复平铺,垂直重复平铺
  6.     bg:getTexture():setTexParameters(gl.LINEAR, gl.LINEAR, gl.REPEAT, gl.REPEAT)
  7.     bg:setPosition(cc.p(size.width/2, size.height/2))
  8.     layer:addChild(bg, 0)

  9.     local boxA = cc.Sprite:create("BoxA2.png")
  10.     boxA:setPosition(cc.p(size.width/2 -120 , size.height/2 + 120))
  11.     layer:addChild(boxA, 10, kBoxA_Tag)

  12.     local boxB = cc.Sprite:create("BoxB2.png")
  13.     boxB:setPosition(cc.p(size.width/2, size.height/2))
  14.     layer:addChild(boxB, 20, kBoxB_Tag)

  15.     local boxC = cc.Sprite:create("BoxC2.png")
  16.     boxC:setPosition(cc.p(size.width/2 + 120, size.height/2 + 160))
  17.     layer:addChild(boxC, 30, kBoxC_Tag)
  18.     -- 创建一个事件监听器 OneByOne 为单点触摸
  19.     local listener1 = cc.EventListenerTouchOneByOne:create()
  20.     -- 设置是否吞没事件,在 onTouchBegan 方法返回 true 时吞没
  21.     listener1:setSwallowTouches(true)
  22.     -- EVENT_TOUCH_BEGAN事件回调函数
  23.     listener1:registerScriptHandler(touchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
  24.     -- EVENT_TOUCH_MOVED事件回调函数
  25.     listener1:registerScriptHandler(touchMoved,cc.Handler.EVENT_TOUCH_MOVED )
  26.     -- EVENT_TOUCH_ENDED事件回调函数
  27.     listener1:registerScriptHandler(touchEnded,cc.Handler.EVENT_TOUCH_ENDED )
  28.    
  29.     local eventDispatcher = layer:getEventDispatcher()
  30.     -- 添加监听器
  31.     eventDispatcher:addEventListenerWithSceneGraphPriority(listener1, boxA)
  32.     local listener2 = listener1:clone()
  33.     eventDispatcher:addEventListenerWithSceneGraphPriority(listener2, boxB)
  34.     local listener3 = listener1:clone()
  35.     eventDispatcher:addEventListenerWithSceneGraphPriority(listener3, boxC)
  36.     return layer
  37. end
复制代码

其中:
local eventDispatcher = layer:getEventDispatcher()
是我自己改写的,程序可以运行并成功
原文是
local eventDispatcher = cc.Director:getInstance():getEventDispatcher()
这里总是报错,我也不知道什么原因,请详解,谢谢

我的本地环境是:
cocos2d-x 3.1
IDE:cocos code IDE 1.02


回复

使用道具 举报

2

主题

3

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2016-1-11 15:07:36 | 显示全部楼层
万万没想到,后面的例子又改成
local eventDispatcher = self:getEventDispatcher()
那就是前例有勘误?:L:L:L:L:L:L:L:L
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|智捷社区 ( 京ICP备09013343号-1

GMT+8, 2019-1-16 09:54 , Processed in 0.091317 second(s), 25 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表