You have two different labels - one in the HUD, which has a text set at the HUD init and nexer updated - one in the actor, updated which I suspect is not visible because out of screen
If you want to update the HUD label, you can make the actor's update publish a 'distance_updated' event, the HUD listen to that event and updating the label's text. Read about user defined events in the pyglet doc If you want to make the actor's label visible, use a small x,y in _create_text(self, x, y) ; start with 0, 0 and do smal changes to find the desired offset. On Sun, Sep 27, 2020 at 9:42 PM Christoph Roth <[email protected]> wrote: > Hi all, > > I am learning Cocos 2D and Python and have a simple question. > > I'd like to output the content of a variable on the screen, so that I can > see how it changes during runtime. > > I have an actor class like this: > > class Actor(cocos.cocosnode.CocosNode): > def __init__(self, x, y): > super(Actor, self).__init__() > w, h = director.get_window_size() > self.position = (x, y) > self.slow_radius = 200 > self.velocity = eu.Vector2(0, 0) > self.speed = 10 > self.max_force = 5 > self.max_velocity = 200 > self.target = None > self.seek = True > self.distance = 10 > self.distance_text = self._create_text(w-60, h-40) > self.add(ps.Sun()) > self.schedule(self.update) > > def update(self, dt): > if self.target is None: > return > self.distance = self.target - eu.Vector2(self.x, self.y) > ramp = 1.0 > ramp = min(abs(self.distance) / self.slow_radius, 1.0) > steering = self.distance * self.speed * ramp - self.velocity > steering = truncate(steering, self.max_force) > self.velocity = truncate(self.velocity + steering, > self.max_velocity) > direction = 1 if self.seek else -1 > self.position += self.velocity * dt * direction > self.distance_text.element.text = 'Distance: %s' % self.distance > > def _create_text(self, x, y): > text = cocos.text.Label(font_size=10, font_name='Verdana', > anchor_x='right', anchor_y='center', > color=(255, 255, 255, 255)) > text.position = (x, y) > self.add(text) > return text > > and I'd like to output the the content of self.distance for example. > > I wrote another class called HUD: > > class HUD(cocos.layer.Layer): > def __init__(self, distance): > super(HUD, self).__init__() > w, h = director.get_window_size() > self.distance = distance > self.distance_text = self._create_text(w-60, h-40) > > self.distance_text.element.text = 'Distance: %s' % self.distance > > def _create_text(self, x, y): > text = cocos.text.Label(font_size=10, font_name='Verdana', > anchor_x='right', anchor_y='center', > color=(255, 255, 255, 255)) > text.position = (x, y) > self.add(text) > return text > > and a Main Layer that calls both classes: > > class MainLayer(cocos.layer.Layer): > is_event_handler = True > > def __init__(self): > super(MainLayer, self).__init__() > self.actor = Actor(320, 240) > self.add(self.actor) > self.hud = HUD(self.actor.distance) > self.add(self.hud) > > def on_mouse_motion(self, x, y, dx, dy): > self.actor.target = eu.Vector2(x, y) > > def on_mouse_press(self, x, y, buttons, mod): > self.actor.seek = not self.actor.seek > > The output on my screen stays at 10 and doesn't update to the values of > the update function. > > Any help on this would be appreciated. > > Thanks, > Christoph > > -- > You received this message because you are subscribed to the Google Groups > "cocos2d discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/cocos-discuss/698bb178-95f6-4830-b4b0-4b4e8f30abc2n%40googlegroups.com > <https://groups.google.com/d/msgid/cocos-discuss/698bb178-95f6-4830-b4b0-4b4e8f30abc2n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "cocos2d discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/cocos-discuss/CAP3BN9XyC898enRGivKqH1VuUK5r%2Bvte_0v_PWmnzz9J9x1CMA%40mail.gmail.com.
