Büyük bir arama gibi tür döneceği bir daire yapmaya çalışıyorum bir dokunmatik olay bir nesneyi döndürmek. Şu anda, kadranın hangi yöne baktığını göstermek için üstte bir ok var. Ben onun davranışı tür bir eski timey döner telefon gibi olmak istiyorum, parmak/imleç aşağı durumdayken döndürmek, ancak gitmesine izin sonra (yavaş yavaş) başa dön yank edeceğiz böyle. ödünç edilirkivy
#:kivy 1.7.2
#:import kivy kivy
<RootLayout>:
anchor_x: 'center' # I think this /is/ centered
anchor_y: 'center'
canvas.before:
Color:
rgba: 0.4, 0.4, 0.4, 1
Rectangle:
pos: self.pos
size: self.size
Circley:
anchor_x: 'center' # this is /not/ centered.
anchor_y: 'center'
canvas.before:
PushMatrix
Color:
rgba: 0.94, 0.94, 0.94, 1
Rotate:
angle: self.angle
axis: 0, 0, 1
origin: self.center
Ellipse:
source: 'arrow.png'
size: min(self.size), min(self.size)
pos: 0.5*self.size[0] - 0.5*min(self.size), 0.5*self.size[1] - 0.5*min(self.size)
Label:
text: unicode(self.size) # this is /not/ appearing
color: 1,0,0,1
canvas.after:
PopMatrix
Parçalar:
#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')
import math
from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.relativelayout import RelativeLayout
from kivy.graphics import Color, Ellipse, Rectangle
class MinimalApp(App):
title = 'My App'
def build(self):
root = RootLayout()
return(root)
class RootLayout(AnchorLayout):
pass
class Circley(RelativeLayout):
angle = 0
def on_touch_down(self, touch):
ud = touch.ud
ud['group'] = g = str(touch.uid)
return True
def on_touch_move(self, touch):
ud = touch.ud
# print(touch.x, 0)
# print(self.center)
# print(0, touch.y)
# print(touch.x - self.center[0], touch.y - self.center[1])
y = (touch.y - self.center[1])
x = (touch.x - self.center[0])
calc = math.degrees(math.atan2(y,x))
angle = calc if calc > 0 else (360 + calc)
print(angle)
def on_touch_up(self, touch):
touch.ungrab(self)
ud = touch.ud
return True
if __name__ == '__main__':
MinimalApp().run()
Ve kv:
Ve işte benim kod:
İşte böyle benim nesne nasıl göründüğü ve kivy touchtracer demosu ve from this SO question.
Dairenin kökeni ile dokunma olayı arasındaki açıyı doğru şekilde yazdıran bir hesaplama yaptığımı görebilirsiniz (bunun birden çok parmağa nasıl yanıt vereceğinden emin değilsiniz, çok uzak olduğunu düşünmeyin) Bunu arayüzde bir "iplik" geri bildirim olayıyla nasıl bütünleştireceğinizden emin olun.
kopyalayabilirsiniz ::
Çalışma Örneği yükleyin, ancak ben küçük daireye bir dokunuş olay eklemek nasıl biliyor musunuz tepede? Ben sadece ne yaptığımı bildiğimden emin olmak için bir on_touch ses etkinliği atandım, ya da ben/veya/çocuk çemberi için on_touch'a sahip olabilirim gibi görünüyor --- Görünüşe göre ikisine de sahip olamıyorum aynı zamanda. – Mittenchops
'super' kullanarak' on_touch_down' olayını göndermelisiniz. Örneği ekledim. – Nykakin
Her iki olayda da çift baskı var mı? – Mittenchops