将弹丸移动到鼠标点击位置 AS3

Posted

技术标签:

【中文标题】将弹丸移动到鼠标点击位置 AS3【英文标题】:Move projectile to mouse-click position AS3 【发布时间】:2017-10-22 21:20:58 【问题描述】:

我有大炮和炮弹。如何让炮弹从大炮直线移动到鼠标点击位置并停止/消失/激活爆炸动画?

我尝试了不同的解决方案,但它们似乎都不适合我,所以我稍微清除了一下。

是的,我知道这很丑。

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)

	aims.x = mouseX;
	aims.y = mouseY;


Mouse.hide();

zamok.addEventListener(MouseEvent.CLICK, fire);

function fire(m:MouseEvent)

	var s:Sound = new cannonFire();
	s.play();
	var explo:boom = new boom();
	explo.x = mouseX;
	explo.y = mouseY;
	addChild(explo);

【问题讨论】:

向我们展示一些您已经尝试过的代码。最后我检查了一下,SO 是为了寻求帮助和建议,而不是为了生成现成的代码:) @GurtejSingh 如果我给你看你会恨我的,说真的,我最好不要这样做,它太丑了,哦,好吧...... 顺便说一句,您的代码看起来不错。您可能可以使用 Tween 将大炮动画到 mouseX 和 mouseY 位置,并在完成补间时让它爆炸。我通常将 Tweenlite 用于我所有的动画,但那是第三方,所以如果你觉得它很酷,那就试试吧。这很容易。干杯。 【参考方案1】:

您应该考虑要实施的流程。 首先它不是即时的,炮弹需要一些时间才能移动到鼠标点击的位置。 让我们从创建炮弹的函数开始:

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 */

现在我们需要处理点击:

private function onMouseClick(e: MouseEvent):void 

    const target: Point = new Point(stage.mouseX, stage.mouseY);
    //and launch the cannonBall:
    fireCannonBall(target);

大概就是这样。

要了解有关 TweenNano 的更多信息,请点击以下链接: https://greensock.com/tweennano-as

【讨论】:

以上是关于将弹丸移动到鼠标点击位置 AS3的主要内容,如果未能解决你的问题,请参考以下文章

unity中鼠标点击触发物体运动

100个 Unity实用技能| 游戏中获取鼠标点击的坐标,并将游戏对象移动到鼠标的点击位置

AS3:mouseX 在鼠标移动之前不会更新

unity中让物体移动到鼠标点击位置(单击移动和双击暂停移动)

鼠标左键点击是啥意思?

PyAutoGUI 鼠标键盘方法记录