2010-01-17 73 views
0

我以前可能遇到过这样的代码。只是不记得在哪里。我的舞台上有2个展示对象。一个旋转,另一个与旋转物体成90度定位。当物体旋转时,另一个物体从旋转物体调整它的x和y位置。如果这没有意义,那么让我解释我正在尝试做什么。我的Flash游戏中有一个飞船。这艘船在左右翼上有两个托雷。随着轮船转弯,托雷需要留在机翼上。有谁知道我会如何去做这件事。移动一个基于另一个对象旋转的displayobject

回答

1

如果您坚持保持DisplayObject非嵌套,请使用三角函数。

假设在旋转= 0时,您的炮塔物体距离r直接位于船中心的右侧。

private function degreesToRadians(degrees:Number):Number { 
    return degrees * Math.PI/180; 
} 

turret.x = shipCenter.x + r*Math.cos(degreesToRadians(ship.rotation)); 
turret.y = shipCenter.y + r*Math.sin(degreesToRadians(ship.rotation)); 

然而,学习如何使用适当的变换矩阵或嵌套的显示对象将最终导致一个更清洁的解决方案

+0

嘿谢谢。你是什​​么意思非嵌套。我把这些炮塔从船舱内部称之为炮塔。这是你的意思嵌套?或者你的意思是把这些炮塔放在我的船上,从动画片段内(即将它们从库中拖放到位),我只尝试了第一种解决方案。 – numerical25 2010-01-19 02:56:13

+0

我的意思是嵌套在显示列表的意义上 - 将各种船舶部件的图形表示放置到共享的DisplayObjectContainer子类中。我不确定如何在CS4中正确执行此操作,但显示列表的基本原理如下所述:http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_01.html – ZackBeNimble 2010-01-19 03:28:53

3

你为什么不把它们嵌入翅膀内呢?如果机翼旋转,它们将保持在机翼的顶部。

+0

翼是船舶图像的一部分。所以我不得不根据整艘船形象 – numerical25 2010-01-17 20:23:44

+0

为什么不把它们作为主船的孩子,并且它们的变换矩阵相对于父母?然后,随着父母的旋转,您将其应用于子女 – zebrabox 2010-01-18 00:13:05

+0

您能否为我们提供旋转之前和之后的图形以及您的场景应该是什么样子? – antpaw 2010-01-18 10:48:18

相关问题