It looks like you're new here. If you want to get involved, click one of these buttons!
--[[ Scale by gesture клас Масштабування жестом v.1.0 <a href="https://simartinfo.blogspot.com/p/v.html" rel="nofollow">https://simartinfo.blogspot.com/p/v.html</a> author (c) <a href="https://www.facebook.com/AndroidMobileGame"" rel="nofollow">https://www.facebook.com/AndroidMobileGame"</a>; ВИКОРИСТАННЯ: ------------------------------------ using: --Lupa.new(number of fingers) local Sprite1=Lupa.new(1) stage:addChild(Sprite1) --number of fingers: 1 or 2 ------------------------------------- ]] Lupa = gideros.class(Sprite) function Lupa:init(mode) if mode then self.m=mode else self.m=2 end self:addEventListener(Event.TOUCHES_BEGIN, self.onTouchesBegin, self) self:addEventListener(Event.TOUCHES_MOVE, self.onTouchesMove, self) self:addEventListener(Event.TOUCHES_END, self.onTouchesEnd, self) self:addEventListener(Event.TOUCHES_CANCEL, self.onTouchesEnd, self) end function Lupa:onTouchesBegin(event) if event.touch.id==1 then self.startY=event.touch.y self.startX=event.touch.x elseif event.touch.id==2 then self.startY2=event.touch.y self.startX2=event.touch.x self.on=true end end function Lupa:onTouchesMove(event) if event.touch.id==1 then -- ПЕРЕМІЩЕННЯ 1 if (self.m==1 and self.startX) or (self.m>1 and self.on and self.startX) then self:setPosition(self:getX()+event.touch.x-self.startX,self:getY()+event.touch.y-self.startY) end self.startY=event.touch.y self.startX=event.touch.x -------------------------------- --встановити якір на палець 1 -------------------------------- if self.on then local s=self:getScale() --масштаб local ax,ay=self:getAnchorPosition() --старі координати якоря --поправка на масштаб ax=ax*s ay=ay*s local px,py=self:getPosition() -- координати спрайта --найти верхній лівий край local kx=px-ax local ky=py-ay local cy= self.startY local cx= self.startX -- новий якір local ax2=cx-kx local ay2=cy-ky self:setAnchorPosition(ax2/s,ay2/s) --встановити новий якір s-поправка на масштаб self:setPosition(px+(ax2-ax),py+(ay2-ay)) -- коригувати позицію спрайту згідно нового якоря end ---------------------------------- elseif event.touch.id==2 then self.startY2=event.touch.y self.startX2=event.touch.x ---------------------------------- -- дистанція між пальцем 1 і 2 if self.on then self.d2= math.sqrt((self.startX-event.touch.x)^2+(self.startY-event.touch.y)^2) if self.d then self:setScale(self:getScaleX()*( self.d2/self.d)) -- масштаб end self.d=self.d2 end ---------------------------------- end end function Lupa:onTouchesEnd(event) --ВИМКНУТИ ЯКЩО 1 ПАЛЕЦЬ ВІДПУСТИТИ if event.touch.id==1 or event.touch.id==2 then self.on=nil self.d=nil self.startY=nil self.startX=nil end end |
Likes: Apollo14, keszegh, antix, vitalitymobile, gemboy100
Comments
"What one programmer can do in one month, two programmers can do in two months." - Fred Brooks
“The more you do coding stuff, the better you get at it.” - Aristotle (322 BC)
"What one programmer can do in one month, two programmers can do in two months." - Fred Brooks
“The more you do coding stuff, the better you get at it.” - Aristotle (322 BC)
Likes: Apollo14
https://play.google.com/store/apps/developer?id=razorback456
мій блог по гідерос https://simartinfo.blogspot.com
Слава Україні!
Download Lupa v. 2.0
Likes: Atavismus, antix, MoKaLux
https://play.google.com/store/apps/developer?id=razorback456
мій блог по гідерос https://simartinfo.blogspot.com
Слава Україні!
https://deluxepixel.com
https://github.com/razorback456/gideros_tools/blob/master/lupa.lua
https://play.google.com/store/apps/developer?id=razorback456
мій блог по гідерос https://simartinfo.blogspot.com
Слава Україні!
Likes: oleg
now my site is here
https://simartinfo.blogspot.com
Likes: antix
https://play.google.com/store/apps/developer?id=razorback456
мій блог по гідерос https://simartinfo.blogspot.com
Слава Україні!