我正在 AS3 中构建一个 3D 旋转旋转木马,基于 Keith Peter 的示例。
我已经让旋转木马旋转起来,一切都很好,到目前为止,但我无法确定如何控制它以使其旋转到特定元素。我知道这只是数学,但现在,在紧迫的期限内,我并没有摸索它。任何帮助表示赞赏。
我用下面的代码设置它——目前有 10 个元素,所以每个元素与其余元素的间距为 36 度——但最终可能会有更多或更少的元素,所以它需要使用可变数字。例如,我想说“旋转到元素 4”,它会在那里旋转。
因此,我希望根据我想要去的特定元素来设置 _container.rotationY。所以(伪代码)
function gotoElement($element:int):void {
_container.rotationY = ?
}
我还需要弄清楚如何将 _container.rotationY 保持在 0 到 360 之间,但我想这是一个简单的模数?
非常感谢任何帮助!谢谢!
private function createCarousel():void
{
_container.z = 0;
addChild(_container);
for (var i:int = 0; i<_numberOfImages; i++) {
var angle:Number = Math.PI * 2/_numberOfImages*i;
var item:JukeBoxAlbum = _images[i];
item.x = Math.cos(angle) * RADIUS;
item.z = Math.sin(angle) * RADIUS;
item.rotationY = (-360/_numberOfImages)*i + 270;
_items.push(item)
}
sortItems();
addEventListener(Event.ENTER_FRAME,loop,false,0,true);
stage.addEventListener(MouseEvent.CLICK,click,false,0,true);
}