Flüssige Bewegung von Bitmaps [Flash 9]
| 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? | | | 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. | | | Beiträge: 98 Wohnort: meerbusch Registriert: Dec 2002
| 16.10.2012, 09:39
|
|