{lang: 'de'}
Flashhilfe.de - Flash Community

Flüssige Bewegung von Bitmaps [Flash 9]

 


AntwortenRegistrieren Seite1  

mietz#1
Benutzerbild von mietz
Beiträge: 1
Registriert: Oct 2012

07.10.2012, 22:19

Hallo Flashhilfe.de,

ich bin quasi Neueinsteiger in Flash (AS3) und habe eine Art Schiebepuzzle programmiert. Damit alle wissen wie es geht:

http://images.colourbox.com/thumb_COLOURBOX2121736.jpg

Mit dem folgenden Programmcode bewege ich die verschiedenen Stücke auf dem Spielbrett:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
public function verschiebePuzzleTeile (puzzleObjekt:Object, dx,dy:int, slideEffekt:Boolean) {
     blankPoint.x -= dx;
     blankPoint.y -= dy;
     puzzleObjekt.currentLoc.x += dx;
     puzzleObjekt.currentLoc.y += dy;
        if (slideEffekt) {
           startSlide (puzzleObjekt,dx*(pieceWidth+pieceSpace),dy*(pieceHeight+pieceSpace));
        }
        else {
           puzzleObjekt.piece.x = puzzleObjekt.currentLoc.x*(pieceWidth+pieceSpace) + horizOffset;
           puzzleObjekt.piece.y = puzzleObjekt.currentLoc.y*(pieceHeight+pieceSpace) + vertOffset;
        }         
}


und die eigentliche Verschiebung:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
public function startVerschiebung (puzzleObjekt:Object, dx, dy:Number) {
  if (slideAnimation != null)
  {
     slideFertig (null);
  }
     slidingTeil = puzzleObjekt;
     slideRichtung = new Point(dx,dy);
     slideAnimation = new Timer(slideTime/slideSteps,slideSteps);
     slideAnimation.addEventListener (TimerEvent.TIMER,slideTeil);
     slideAnimation.addEventListener (TimerEvent.TIMER_COMPLETE,slideFertig);
     slideAnimation.start ();
     pieceIsSliding = true;
}


ActionScript:
1
2
3
4
public function slideTeil (event:Event) {
     slidingTeil.piece.x += slideRichtung.x/slideSteps;
     slidingTeil.piece.y += slideRichtung.y/slideSteps;
}      


Alles funktioniert nur mein Problem ist, dass, wenn man auf ein Puzzleteil klickt, manchmal die Animation hängt oder nicht flüssig abläuft.

z.Z. habe ich die Variablen wie folgt gesetzt:
slideSteps:int = 40;
slideTime:int = 5;

Bei den Puzzleteilen handelt es sich um *.jpg-Dateien die via Bitmap-Funktion zerteilt und dann positioniert werden.

Könnt ihr mir weiterhelfen?
candiru#2
Benutzerbild von candiru
Beiträge: 190
Registriert: May 2007

15.10.2012, 18:46

hallo,
du könntest mal versuchen, einen tween klasse zu benutzen. Entweder die flashinterne Twenn, oder besser TweenLite oder Caurina, da die interne klasse auch manchmal hakt.
joe brockerhoff#3
Benutzerbild von joe brockerhoff
Beiträge: 98
Wohnort: meerbusch
Registriert: Dec 2002

16.10.2012, 09:39