我有两个电影剪辑,是通过AS3添加到舞台使用闪光开发,一个电影剪辑命名为playerHook和其他fisherman。这两个函数都被添加到我的主构造函数中,如下所示:
fisherman = new mcFisherman;
stage.addChild(fisherman);
fisherman.x = (stage.stageWidth / 2) + 250;
fisherman.y = (stage.stageHeight / 2) - 100;我有一个单独的函数playerHookLine();,它由我的主事件enter frame gameloop调用。
此函数使用一条线连接两个影片剪辑,其作用类似于钓鱼线。它做得非常好。
我遇到的问题是,当我开始玩游戏时,我的钩线不能像我的playerHook视频剪辑那样注册HitTestObject。
我已经设法调整了一点代码,它确实开始注册,但没有一个点应该是连接的线是正确的,它到处都是。下面是该函数的代码:
private function playerHookLine():void
{
graphics.clear();
graphics.lineStyle(1, 0, 1);
graphics.moveTo(fisherman.x, fisherman.y);
graphics.curveTo(playerHook.x, playerHook.y, mouseX, mouseY);
}当我将代码更改为以下代码时:
private function playerHookLine():void
{
playerHook.graphics.clear();
playerHook.graphics.lineStyle(1, 0, 1);
playerHook.graphics.moveTo(fisherman.x, fisherman.y);
playerHook.graphics.curveTo(playerHook.x, playerHook.y, mouseX, mouseY);
}然后,它将hitTest与钩子一起注册,但是该行不再处于正确的位置。我做错了什么,我应该如何正确使用Graphics API代码?我想要的线路和playerHook都与屏幕上的敌人hitTest,但我也希望线路仍然连接到渔夫和PlayerHook。
最后,我的playerHook是由鼠标控制的。所以鼠标移动到哪里,它就移动到哪里。
这是我到目前为止所知道的:
private function playerHookLine():void
{
var playerHookGlobalPos:Point = playerHook.localToGlobal(new Point());
var fishermanGlobalPos:Point = fisherman.localToGlobal(new Point());
playerHook.graphics.clear();
playerHook.graphics.lineStyle(1, 0, 1);
playerHook.graphics.moveTo(fisherman.x, fisherman.y);
playerHook.graphics.curveTo(playerHookGlobalPos.x, playerHookGlobalPos.y, mouseX, mouseY);
}但它不起作用
发布于 2014-02-13 17:52:26
两者之间有很大的区别,
graphics.moveTo(fisherman.x, fisherman.y); //指的是主类,即Super类。(阶段(全局)坐标)
和
playerHook.graphics.moveTo(fisherman.x, fisherman.y); //引用playerHook对象(本地坐标)。
根据你提供的信息,我认为你必须使用,
globalToLocal()
https://stackoverflow.com/questions/21749424
复制相似问题