学习一下cocos2dx 3.3 lua类的创建,记录一下自己的学习方法
local TouchSprite = class("TouchSprite", --继承cc.Sprite
function(fileName)
return cc.Sprite:create(fileName)
end
)
TouchSprite.__index = TouchSprite -- 用于访问
TouchSprite.type = 0 -- 自定义属性
TouchSprite.typeAction = 0
function TouchSprite:createMS(fileName,_type) --自定义构造函数
local mySprite = TouchSprite.new(fileName) --这个new相当于执行了上面的class方法
mySprite:myInit(_type)
mySprite:Init(_type)
mySprite:setPosition(100,200)
return mySprite
end
function TouchSprite:myInit(_type) --自定义函数
self.type =_type
cclog(self.type)
end
function TouchSprite:Init(type)
local function onTouchBegan(touch, event)
if cc.rectContainsPoint(self:getBoundingBox(),touch:getLocation() ) then
cclog("onTouchBegan")
self.type =type
cclog(self.type)
if self.typeAction == 0 then
self:action(0.5,type)
end
end
return true
end
local function onTouchMoved(touch, event)
if cc.rectContainsPoint(self:getBoundingBox(),touch:getLocation() ) then
cclog("onTouchMoved")
end
end
local function onTouchEnded(touch, event)
if cc.rectContainsPoint(self:getBoundingBox(),touch:getLocation() ) then
cclog("onTouchEnded")
end
end
local listener = cc.EventListenerTouchOneByOne:create()
listener:setSwallowTouches(true);
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED )
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self)
end
function TouchSprite:action(time,type)
self.typeAction = 1
local actionBy = cc.RotateBy:create(time , 360)
local function functioncall()
self.typeAction = 0
end
local callback = cc.CallFunc:create(functioncall)
self:runAction(cc.Sequence:create(actionBy, callback))
end
function TouchSprite:removeThis()
if self then
self:getParent():removeChild(self, true)
end
end
return TouchSprite