2017-05-23 2 views
2

Ich habe eine Kanone und Kanonenkugel. Wie mache ich eine Kanonenkugel, um sich in einer Linie von der Kanone zur Mausklickposition zu bewegen und zu stoppen/zu verschwinden/aktiviere Explosionsanimation?Projektil auf Mausklickposition bewegen AS3

Ich habe verschiedene Lösungen ausprobiert und keiner von ihnen schien für mich zu funktionieren, also habe ich es ein wenig geklärt.

Und ja, ich weiß, es ist hässlich.

import flash.events.MouseEvent; 
 
import flash.media.Sound; 
 
import flash.display.MovieClip; 
 
import flash.events.Event; 
 
import flash.ui.Mouse; 
 
import flash.events.MouseEvent; 
 
import flash.geom.Point; 
 
import flash.utils.Timer; 
 
import flash.display.Sprite; 
 

 
addEventListener(Event.ENTER_FRAME, enterFr); 
 

 
function enterFr(e:Event) 
 
{ 
 
\t aims.x = mouseX; 
 
\t aims.y = mouseY; 
 
} 
 

 
Mouse.hide(); 
 

 
zamok.addEventListener(MouseEvent.CLICK, fire); 
 

 
function fire(m:MouseEvent) 
 
{ 
 
\t var s:Sound = new cannonFire(); 
 
\t s.play(); 
 
\t var explo:boom = new boom(); 
 
\t explo.x = mouseX; 
 
\t explo.y = mouseY; 
 
\t addChild(explo); 
 
}

+1

Zeigen Sie uns einige Code, was Sie bereits versucht haben. Zuletzt habe ich überprüft, SO ist für das Suchen von Hilfe und Rat, und nicht zum Erzeugen von gebrauchsfertigem Code :) –

+0

@GurtejSingh Sie würden mich hassen, wenn ich es Ihnen zeige, ernsthaft, ich tue es besser nicht, es ist zu hässlich und oh well ... – solspire

+1

Ihr Code sieht gut aus, übrigens. Sie können wahrscheinlich ein Tween verwenden, um die Kanone in die mouseX- und mouseY-Position zu animieren und nach Beendigung des Tweens zu explodieren. Normalerweise verwende ich Tweenlite für alle meine Animationen, aber das ist eine dritte Partei, wenn du also cool bist, gib es eine Chance. Es ist ziemlich einfach. Prost. –

Antwort

2

Nun sollten Sie den Prozess denken, die Sie implementieren möchten. Zuerst ist es nicht sofort, es dauert einige Zeit, bis die Kanonenkugel zu dem Punkt gelangt, an dem die Maus geklickt hat. Lassen Sie uns mit einigen Start-Funktion, die eine Kanonenkugel schaffen:

private function fireCannonBall(target: Point):void 
{ 
    const cannonBall:CannonBall = new CannonBall(); // you need to implement this class, or just use some MovieClip from library; 

    cannonBall.x = initialPosition.x; // initial position is a point where your cannon is located. 
    cannonBall.y = initialPosition.y; 

    addChild(cannonBall); 

    // I suggest using TweenNano, but it has some limitations, read the License Agreement carefully 
    TweenNano.to(cannonBall, 15 /* animation duration */, {x: target.x, y: target.y, onComplete: makeExplosion, onCompleteParams: [cannonBall]}); 
} 

private function makeExplosion(cannonBall: CannonBall):void 
{ 
    /* I leave this part to you, here you might want to launch some explosion animation */ 
} 

Jetzt müssen wir den Klick Griff:

private function onMouseClick(e: MouseEvent):void 
{ 
    const target: Point = new Point(stage.mouseX, stage.mouseY); 
    //and launch the cannonBall: 
    fireCannonBall(target); 
} 

Das ist es, grob.

Um mehr zu wissen TweenNano Sie bitte dem Link folgen: https://greensock.com/tweennano-as