This site requires JavaScript, please enable it in your browser!
Greenfoot back
Mieken
Mieken wrote ...

2021/10/9

Actor größer-kleiner problem

Mieken Mieken

2021/10/9

#
Wie schafft man es, dass ein bestimmter Actor immer größer wird, zu einer bestimmten Größe, und dann wieder auf normal Größe schrumpft und dass mit unterschiedlichen Geschwindigkeiten. Wenn ich es mit "this.getImage().scale(XY);" versuche wird es nicht immer größer, da es direkt auf die größte Größe gewachsen ist. Ps: ich bin neu und hab noch keine Erfahrung mit Programmieren
Aaron-aid Aaron-aid

2021/10/9

#
the solution would probally adding a timer that grows using getworld().wait() and storing the seconds that pass and in your scale function add the seconds the the image scale
Aaron-aid Aaron-aid

2021/10/9

#
if (getWorld().wait(2) ==true ) { }
Aaron-aid Aaron-aid

2021/10/9

#
somthign to that effect
Mieken Mieken

2021/10/9

#
Der Actor vergrößert sich so wie er soll und auch wenn er über den Wert 150 gelangt merkt er es und wird kleiner. Allerdings nicht ganz, er bleibt mitten im kleiner werden stehen und bleibt dann auf seine Größe, wobei er eigentlich wieder auf den Wert 50 schrumpfen soll und dann wieder größer werden sollte. Was mache ich falsch?
int neueHoehe = 50;
    int neueBreite = 50;
    int i = 0;
    boolean ok;
    public void act()
    {
     if(i == 0)
        {
            ok = true;
            i++;
        }
       while(ok == true)
       {
         neueHoehe = (int)(this.getImage().getHeight()*1.1);
         neueBreite = (int)(this.getImage().getWidth()*1.1);
         this.getImage().scale(neueBreite,neueHoehe);
         greenfoot.Greenfoot.delay(3);
        
         if(neueBreite > 150 )
         {
          ok = false;
          neueHoehe = (int)(this.getImage().getHeight()*0.8);
          neueBreite = (int)(this.getImage().getWidth()*0.8);
          this.getImage().scale(neueBreite,neueHoehe);
          greenfoot.Greenfoot.delay(3);
         if(neueBreite < 50)
         {
             ok = true;
         }
       } 
      }
}
danpost danpost

2021/10/9

#
No while, boolean or delay; only one if to change directions:
GreenfootImage image;
int dSize = 1; // amount in change of size (grow 1 pixel at a time; 

// the line in this method could instead be done in the constructor of the class
// to avoid using this method
protected void addedToWorld(World world)
{
    image = getImage();
}

public void act()
{
    GreenfootImage img = new GreenfootImage(image);
    img.scale(getImage().getWidth()+dSize, getImage.getHeight()+dSize);
    setImage(img);
    if (getImage().getHeight() < 50 || getImage().getHeight() > 150) dSize = -1-dSize;
}
Mieken Mieken

2021/10/9

#
Danke für die Hilfe jetzt klappt es ;)
You need to login to post a reply.