Lua: Создание класса показывает необычное поведение с помощью setAnchorPoint и serRotation
У меня есть этот кусок кода. В этом примере, если я заменил "Graphic" на "self" в Graphic:setAnchorPoint и Graphic:setRotation, изображение появится на экране, но не будет вращаться. Какова причина?
Я довольно новичок в Gideros и не совсем понимаю, какие изменения необходимо внести при создании класса. Короткое краткое объяснение действительно требуется, пожалуйста?
Я использую Lua с Gideros
WatchHands= Core.class(Sprite)
W, H = application:getDeviceWidth(), application:getDeviceHeight()
H, W = W, H
ori = Application.LANDSCAPE_LEFT
application:setOrientation(ori)
function WatchHands:init(Image, posx, posy)
posx = posx or 0
posy = posy or 0
Graphic = Bitmap.new(Texture.new(Image))
Graphic: setAnchorPoint(0.2257, 0.5)
self:addChild(Graphic)
self: setPosition( posx, posy)
self.width = self: getWidth()
self.height = self: getHeight()
self: setScale(0.5, 1)
Graphic:setRotation(math.random( 1,360))
self:addEventListener(Event.ADDED_TO_STAGE, self.onAddedToStage, self)
return self
end
function WatchHands: playsound(sound)
local channel = sound:play()
return channel
end
function WatchHands: onAddedToStage()
self:addEventListener(Event.ENTER_FRAME,
function()
self:setRotation( Graphic:getRotation() + 5)
Timer.delayedCall(math.random(30000, 60000),
function()
self:setRotation( self:getRotation() + math.random(6,10) )
end)
end)
end
sechand = WatchHands.new("secondshand.png", W/2, H/2)
minhand = WatchHands.new("minutehand.png", W/2, H/2)
stage: addChild(sechand)
stage: addChild(minhand)
1 ответ
В твоем случае Graphic
это пример Bitmap
которым вы хотите манипулировать, пока self ссылается на экземпляр класса, в котором вы находитесь, который в вашем случае WatchHands
Если вы поворачиваете Graphic, то должен вращаться только Graphic, но если вы поворачиваете WatchHands, то должны вращаться все его дочерние элементы, включая Graphic.
Вы можете поместить печать в событие ENTER_FRAME, как print("Angle:", self:getRotation())
чтобы увидеть, действительно ли увеличивается угол "я" или у вас есть какая-то другая ошибка в вашем коде