Actionscript 3 动作脚本3中的旋转圆

Actionscript 3 动作脚本3中的旋转圆,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我试图每秒以顺时针方向移动蓝色圆圈(b圆圈)中的红色圆圈(b圆圈.rcille)。我已经尝试过在计时器事件处理程序(red顺时针)中更改红色圆圈(bcircle.rcircle)的x和y坐标。我将非常感谢在这方面的任何帮助。谢谢 我目前的代码如下 package { import flash.display.*; import flash.utils.Timer; import flash.events.TimerEvent; public class blu

我试图每秒以顺时针方向移动蓝色圆圈(b圆圈)中的红色圆圈(b圆圈.rcille)。我已经尝试过在计时器事件处理程序(red顺时针)中更改红色圆圈(bcircle.rcircle)的x和y坐标。我将非常感谢在这方面的任何帮助。谢谢

我目前的代码如下

package
{
    import flash.display.*;
    import flash.utils.Timer;
    import flash.events.TimerEvent;


    public class blueCircles extends MovieClip
    {
        public var bcircle:MovieClip = new MovieClip();
        public var rcircle:MovieClip = new MovieClip();
        private var timer:Timer = new Timer(1000,10);

        public function blueCircles()
        {
            createCircles();
            timer.start();
            timer.addEventListener(TimerEvent.TIMER, redClockwise);

        }
        private function createCircles():void
        {

            for (var i:Number=0; i<=9; i++)
            {
                var bcircle:MovieClip = new MovieClip();
                var bxpos:int = 20;
                var bypos:int = 20;

                bcircle.graphics.beginFill(0x0033CC);
                bcircle.graphics.drawCircle(bxpos,bypos,15);
                bcircle.graphics.endFill();
                bcircle.y = (30 + 10) * i;
                addChild(bcircle);

                //var rcircle:MovieClip = new MovieClip();
                bcircle.rcircle = new Shape();
                var rxpos:int = 15;
                var rypos:int = 25;

                bcircle.rcircle.graphics.beginFill(0xFF0000);
                bcircle.rcircle.graphics.drawCircle(rxpos,rypos,5);
                bcircle.rcircle.graphics.endFill();
                rcircle.y = (30 + 10) * i;
                bcircle.addChild(bcircle.rcircle);
            }
        }
        public function redClockwise(e:TimerEvent):void 
        {
            trace("Call");

            //bcircle.rcircle.rotation += 50;
            bcircle.rcircle.x += 50 * Math.PI/180;
            bcircle.rcircle.y += 50 * Math.PI/180; 
            //rcircle.rotation = 50;

        }

    }

}
包
{
导入flash.display.*;
导入flash.utils.Timer;
导入flash.events.TimerEvent;
公共类blueCircles扩展了MovieClip
{
公共变量b循环:MovieClip=新的MovieClip();
公共变量rcill:MovieClip=新的MovieClip();
专用var定时器:定时器=新定时器(1000,10);
公共职能
{
createCircles();
timer.start();
timer.addEventListener(TimerEvent.timer,顺时针红色);
}
私有函数createCircles():void
{
对于(变量i:Number=0;i几个点:

  • 您需要在类级别存储对
    bcircle
    的引用,以便可以在
    red顺时针()方法中引用它。您已经这样做了,但是如果您密切关注,您会注意到您在
    createCircles()中实际做的事情
    正在创建一个名为
    bcircle
    的新局部变量,并使用它,而不是引用类级定义
  • 因为您有多个圆,所以单个类级别的定义将不起作用。您需要创建一个数组,并在其中存储每个圆,以便可以循环该数组并更新所有圆
  • 你的计时器只会运行10次。这可能是故意的,但我想我会指出这一点
  • 你沿圆形路径移动的逻辑无效。你在这里所做的只是向东南移动起始位置。你需要使用正反方向移动我假设你想要的方式。想法是将红色圆圈定位在蓝色的中心,然后使用一个值(可能
    旋转
    )根据红色圆的半径和上述值,将红色圆的位置偏移到蓝色母圆的中心,以获得从右中心的角度
  • 你在一个类中做的太多了。创建一个类“DualCircle”或类似的类,并在其中管理红圈的移动以及每个元素的外观。仅使用document类来创建和定位这些元素中的每一个。这将大大降低你试图做的事情的复杂性

  • 谢谢马蒂·华莱士,我正在考虑使用阵列。我将接受你所说的一切,然后继续。再次感谢。