首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocos2d-html5和socket.io此未定义

Cocos2d-html5和socket.io此未定义
EN

Stack Overflow用户
提问于 2013-03-25 17:33:34
回答 1查看 703关注 0票数 2

我只是让socket.io和cocos2d-html5正常工作。每次有新的客户端连接时,我都想在屏幕上显示一个新的LabelTTF。随着应用程序的启动,我创建了一个主层,并将Tilemaplayer作为子层存储在_tilemaplayer中。

在我的主层上,我用onEnter编写了以下代码:

代码语言:javascript
复制
var tilemap = new TilemapLayer();
this._tilemaplayer = tilemap;
this.addChild(tilemap);

socket = io.connect('hostname:port');
socket.on('connect', function(){
    socket.emit('setName', {name: 'Testname'})
})

socket.on('newClient', function(data){
    var testLabel = cc.LabelTTF.create(data.name, "Arial", 32);
    this._tilemaplayer.addChild(testLabel);
})

为什么会出现this._tilemaplayer未定义的错误?我可以在我的主层的其他函数中访问它,为什么不能在这里呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-22 10:36:43

我认为socket.on事件处理函数中的"this“不等于层或场景的"this”。

你需要保存你的图层或场景的指针"this",代码如下:

代码语言:javascript
复制
var tilemap = new TilemapLayer();
this._tilemaplayer = tilemap;
this.addChild(tilemap);

socket = io.connect('hostname:port');
socket.on('connect', function(){
    socket.emit('setName', {name: 'Testname'})
});

_this = this;
socket.on('newClient', function(data){
    var testLabel = cc.LabelTTF.create(data.name, "Arial", 32);
    _this._tilemaplayer.addChild(testLabel);
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15611576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档