[gcompris: 27/111] removed lag in button press event
- From: Bruno Coudoin <bcoudoin src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gcompris: 27/111] removed lag in button press event
- Date: Wed, 3 Oct 2012 23:56:50 +0000 (UTC)
commit 9627f6f50c77020bcb65ad1574e64285212d4cda
Author: serah <serah4291 gmail com>
Date: Tue Jun 12 18:26:28 2012 +0530
removed lag in button press event
src/intro_gravity-activity/intro_gravity.py | 92 ++++++++++++++-------------
1 files changed, 49 insertions(+), 43 deletions(-)
---
diff --git a/src/intro_gravity-activity/intro_gravity.py b/src/intro_gravity-activity/intro_gravity.py
index db3cd80..0c38199 100644
--- a/src/intro_gravity-activity/intro_gravity.py
+++ b/src/intro_gravity-activity/intro_gravity.py
@@ -58,7 +58,7 @@ class Gcompris_intro_gravity:
# automaticaly.
self.rootitem = goocanvas.Group(parent =
self.gcomprisBoard.canvas.get_root_item())
-
+
#set initial background
gcompris.set_background(self.gcomprisBoard.canvas.get_root_item(),"intro_gravity/solar_system.svgz")
@@ -69,11 +69,11 @@ class Gcompris_intro_gravity:
svg_handle = svghandle,
svg_id = "#selected"
)
-
- #connect the selected label to the next screen
+
+ #connect the selected label to the next screen
self.selection.connect("button_press_event", self.set_level)
gcompris.utils.item_focus_init(self.selection, None)
-
+
self.text = goocanvas.Text(parent=self.rootitem,
x = 400,
y = 400,
@@ -106,15 +106,15 @@ class Gcompris_intro_gravity:
#Load the middle planet - Uranus
middle = mid_planet(self.rootitem,self.level)
- #Load planet on the left (saturn) and it's slider
+ #Load planet on the left (saturn) and it's slider
self.planet_left = fixed_planet(self.rootitem,middle)
self.planet_left.load_planet("saturn.png",45,160,1)
-
-
+
+
#Planet on right (neptune) and it's slider
self.planet_right = fixed_planet(self.rootitem,middle)
self.planet_right.load_planet("neptune.png",660,165,2)
-
+
def end(self):
print "intro_gravity end"
# Remove the root item removes all the others inside it
@@ -156,19 +156,19 @@ class Gcompris_intro_gravity:
self.level = 100
elif self.gcomprisBoard.level == 3:
self.level = 50
- self.game()
-
+ self.game()
+
def next_level(self):
gcompris.bonus.display(gcompris.bonus.WIN,gcompris.bonus.TUX)
self.end()
self.gcomprisBoard.level += 1
- self.timer_on = False
+ self.timer_on = False
self.board_paused = 1
def crash(self):
self.end()
self.board_paused = 1
- self.timer_on = False
+ self.timer_on = False
gcompris.bonus.display(gcompris.bonus.LOOSE,gcompris.bonus.TUX)
self.board_paused = 1
@@ -190,10 +190,10 @@ class mid_planet(Gcompris_intro_gravity):
self.velocity = 0
self.old_force = None
self.count = 0
- self.planet_right_mass = 1000
- self.planet_left_mass = 1000
+ self.planet_right_mass = self.planet_left_mass = 1000
self.timer_on = False
self.level = level
+ self.true = 2
def move_planet(self,force,planet,planet_mass):
self.timer()
@@ -209,12 +209,15 @@ class mid_planet(Gcompris_intro_gravity):
self.check(force)
else:
self.crash()
- gobject.source_remove(self.t)
-
+ gobject.source_remove(self.t)
+
def check(self,force):
+ #if forces from both planets are equal then velocity does not change
if force == 'equal':
self.velocity = self.last_velocity
-
+ self.old_force = 'equal'
+
+ #if there is no change in force applied then increase velocity gradually
elif self.old_force == force:
self.true = 2
self.count += 1
@@ -222,21 +225,22 @@ class mid_planet(Gcompris_intro_gravity):
self.true = 1
self.count = 0
+ #incase of change in forces, change direction and velocity according to force
elif self.old_force != force:
- self.true =1
self.last_velocity = self.velocity
- if self.old_force == 'left':
+ if force == 'left':
self.velocity = -1
- elif self.old_force == 'right':
+ elif force == 'right':
self.velocity = 1
self.old_force = force
-
+
gobject.timeout_add(30,self.force)
-
- def force(self):
+
+ #check force
+ def force(self):
if self.planet_right_mass == self.planet_left_mass:
self.move_planet('equal',1,self.planet_left_mass)
-
+
elif self.planet_right_mass > self.planet_left_mass:
if self.true == 1:
self.velocity +=1
@@ -246,12 +250,12 @@ class mid_planet(Gcompris_intro_gravity):
if self.true == 1:
self.velocity -=1
self.move_planet('left',1,self.planet_left_mass)
-
+
def timer(self):
if self.timer_on == False:
- self.t = gobject.timeout_add(15000,self.next_level)
- self.timer_on = True
-
+ self.t = gobject.timeout_add(10000,self.next_level)
+ self.timer_on = True
+
class fixed_planet:
""" Fixed planets """
@@ -259,9 +263,9 @@ class fixed_planet:
def __init__(self,rootitem,mid_instance):
self.mid = mid_instance
self.rootitem = rootitem
-
+
def load_planet(self,planet_image,x,y,planet):
- self.planet_ = planet
+ self.planet_ = planet
image = "intro_gravity/"+planet_image
pixbuf = gcompris.utils.load_pixmap(image)
self.planet = goocanvas.Image(
@@ -271,14 +275,14 @@ class fixed_planet:
width=120,
x=x,
y=y)
-
+
if self.planet_ == 1:
points_line = goocanvas.Points([(27,190),(27,270)])
else:
points_line = goocanvas.Points([(788,190),(788,270)])
- self.scale_slider= slider(self,points_line) #scale line
-
+ self.scale_slider= slider(self,points_line) #scale line
+
class slider:
""" class for scale slider"""
@@ -289,8 +293,8 @@ class slider:
points=points,
stroke_color="grey",
width=2.0)
- self.planet_mass = 1000
-
+ self.planet_mass = 1000
+
if planet_instance.planet_ == 1:
points_bar = goocanvas.Points([(21,247),(33,247)])
button_x = 9
@@ -300,8 +304,8 @@ class slider:
self.sliding_bar(points_bar)
self.decrease_button(button_x)
- self.increase_button(button_x)
-
+ self.increase_button(button_x)
+
def increase_button(self,x):
pixbuf = gcompris.utils.load_pixmap("/intro_gravity/plus.png")
button = goocanvas.Image(
@@ -319,9 +323,10 @@ class slider:
translate_x = -63
x_bar = 782
force = 'right'
+
button.connect("button_press_event",self.set_mass,1.1,translate_x,-20,500,1,force)
button.connect("button_press_event",self.move_bar,x_bar,-8,1)
-
+
def decrease_button(self,x):
pixbuf = gcompris.utils.load_pixmap("intro_gravity/minus.png")
button = goocanvas.Image(
@@ -329,7 +334,7 @@ class slider:
pixbuf = pixbuf,
x = x,
y = 250
- )
+ )
if self.planet_instance.planet_ == 1:
translate_x = 10
x_bar = 21
@@ -347,17 +352,18 @@ class slider:
points=points,
stroke_color="grey",
line_width=5.0)
-
+
def move_bar(self,a,b,c,x,y,button):
y_old = self.bar.get_bounds().y1
if (y_old > 207 and button ==1) or (y_old < 244 and button ==2):
y_new = int(y_old + y)
gcompris.utils.item_absolute_move(self.bar,x,y_new)
-
+
def set_mass(self,a,b,c,scale,x,y,mass,button,force):
if (self.planet_mass < 3500 and button ==1) or (self.planet_mass > 1000 and button ==2):
self.planet_instance.planet.scale(scale,scale)
self.planet_instance.planet.translate(x,y)
- self.planet_mass += mass
-
+ self.planet_mass += mass
+
self.planet_instance.mid.move_planet(force,self.planet_instance.planet_,self.planet_mass)
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]