对qucik cocos2dx lua SocketTCP的再一次封装,导入全局实例,包含自定义事件

对qucik cocos2dx lua SocketTCP的再一次封装,导入全局实例,包含自定义事件,第1张

概述刚学习了lua两三天,对socket通信做了个自己的封装,导入全局实例,加入自定义事件分发,请大家多多指教 ---- Author: peilin-- Date: 2015-01-22 11:10:35--local Component = require("framework.cc.components.Component")local SocketTCP = require("fra

刚学习了lua两三天,对socket通信做了个自己的封装,导入全局实例,加入自定义事件分发,请大家多多指教

---- Author: peilin-- Date: 2015-01-22 11:10:35--local Component = require("framework.cc.components.Component")local SocketTCP = require("framework.cc.net.socketTCP")local SERVER_IP = "127.0.0.1"local SERVER_PORT = 8888local olafSocket = class("olafSocket",Component)--olAF EVENTolafSocket.EVENT_CLOSE = "SOCKET_TCP_CLOSE"olafSocket.EVENT_CLOSED = "SOCKET_TCP_CLOSED"olafSocket.EVENT_CONNECTED = "SOCKET_TCP_CONNECTED"olafSocket.EVENT_CONNECT_FAILURE = "SOCKET_TCP_CONNECT_FAILURE"olafSocket.EVENT_olAF_DATA = "olAF_DATA"function olafSocket:ctor(__name,...)	self.name = __name or 'olafSocket'	self.host = SERVER_IP	self.port = SERVER_PORT	self.isRetryConnect = false	self.isConnected = false	self.Listener = {}	self.nextListenerID = 0	self.socket = SocketTCP.new(self.host,self.port,self.isRetryConnect)	self.socket:addEventListener(SocketTCP.EVENT_CONNECTED,handler(self,self.onStatus))	self.socket:addEventListener(SocketTCP.EVENT_CLOSE,self.onStatus))	self.socket:addEventListener(SocketTCP.EVENT_CLOSED,self.onStatus))	self.socket:addEventListener(SocketTCP.EVENT_CONNECT_FAILURE,self.onStatus))	self.socket:addEventListener(SocketTCP.EVENT_DATA,self.onData))endfunction olafSocket:connect(obj)	if 'table' ~= type(obj) then        printError("olafSocket:connect require parameter 1 to be a table")        return nil    end	assert(obj.socket,"InvalID socket object")	obj.socket:connect()	return trueendfunction olafSocket:disConnect( obj )	if 'table' ~= type(obj) then        printError("olafSocket:connect require parameter 1 to be a table")        return nil    end    if not obj.socket then return nil end    print("disconnect()")    obj.socket:disconnect()    return trueendfunction olafSocket:dispatchEvent(__event)	if 'table' ~= type(__event) then		printError("olafSocket:dispatchEvent() - invalID param")		return nil	end	if self.Listener[__event.name] == nil then		if DEBUG > 1 then			printInfo("event name :%s no Listener.",__event.name)		end		return true	end	for ID,Listener in pairs(self.Listener[__event.name]) do		-- Listener[1] = handler()		-- Listener[2] = tag		ret = Listener[1](__event)		if __event.stop == true and ret == true then 			break		end	end	return trueendfunction olafSocket:onStatus(__status)	if __status.name == SocketTCP.EVENT_CONNECTED then		self.isConnected = true	end	if __status.name == SocketTCP.EVENT_CLOSED then		self.isConnected = false	end	ret =  self:dispatchEvent({name = __status.name,stop = true})	return retendfunction olafSocket:onData( __data )	ret = self:dispatchEvent({name = olafSocket.EVENT_olAF_DATA,stop = true,data = __data.data})	return retendfunction olafSocket:addListener(obj,__eventname,__Listener,tag)	if 'table' ~= type(obj) then        printError("olafSocket:addListener require parameter 1 to be a table")        return nil    end	assert(type(__eventname) == "string" and __eventname ~= "","olafSocket:addListener() - require parameter 2 to be a string")	if obj.Listener[__eventname] == nil then		obj.Listener[__eventname] = {}	end	-- Listener[1] = handler()	-- Listener[2] = tag	tag = tag or ""	obj.nextListenerID = obj.nextListenerID + 1	obj.Listener[__eventname][obj.nextListenerID] = {__Listener,tag}		return trueendfunction olafSocket:removeListeners(obj,__Listener)	if 'table' ~= type(obj) then        printError("olafSocket:sendData require parameter 1 to be a table")        return nil    end    for event,handlers in pairs(obj.Listener) do    	for ListenerID,Listener in pairs(handlers) do    		if Listener[1] == __Listener then    			handlers[ListenerID] = nil    		end    	end    end    return trueendfunction olafSocket:removeListenersByTag(obj,__tagToRemove)	if 'table' ~= type(obj) then        printError("olafSocket:sendData require parameter 1 to be a table")        return nil    end    for event,Listener in pairs(handlers) do    		if Listener[2] == __tagToRemove then    			handlers[ListenerID] = nil    		end    	end    end    return trueendfunction olafSocket:removeListenersByEvent(obj,__eventToRemove)	if 'table' ~= type(obj) then        printError("olafSocket:sendData require parameter 1 to be a table")        return nil    end    obj.Listener[__eventToRemove] = nil    return trueendfunction  olafSocket:removeAllListener( obj )	if 'table' ~= type(obj) then        printError("olafSocket:sendData require parameter 1 to be a table")        return nil    end    obj.Listener = nilendfunction olafSocket:sendData(obj,__data)	if 'table' ~= type(obj) then        printError("olafSocket:sendData require parameter 1 to be a table")        return nil    end	if DEBUG > 1 then		printInfo("Send Data")		for k,v in pairs(__data) do			print(k,v)		end	end	if obj.isConnected == false then		printError("olafSocket:sendData require connect first")		return nil	end	obj.socket:send(__data)	return trueend-- register global _GolafSocket.global = olafSocket.new("olafSocket_G")function olafSocket.global:connect()	return olafSocket:connect(self)endfunction olafSocket.global:disConnect()	return olafSocket:disConnect(self)endfunction olafSocket.global:sendData(__data)	return olafSocket:sendData(self,__data)endfunction olafSocket.global:addListener(__eventname,__Listener)	return olafSocket:addListener(self,__Listener)endfunction olafSocket.global:removeListeners( __Listener )	return olafSocket:removeListeners(self,__Listener)endfunction olafSocket.global:removeListenersByTag(__tagToRemove)	return olafSocket:removeListenersByTag(self,__tagToRemove)endfunction olafSocket.global:removeListenersByEvent( __event )	return olafSocket:removeListenersByEvent(self,__event)endfunction olafSocket.global:removeAllListener()	return olafSocket:removeAllListener(self)end_G.olafNet = _G.olafNet or {}_G.olafNet.olafSocket = olafSocketreturn olafSocket
总结

以上是内存溢出为你收集整理的对qucik cocos2dx lua SocketTCP的再一次封装,导入全局实例,包含自定义事件全部内容,希望文章能够帮你解决对qucik cocos2dx lua SocketTCP的再一次封装,导入全局实例,包含自定义事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1034913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存