Actionscript 3 动作脚本3中的旋转圆
我试图每秒以顺时针方向移动蓝色圆圈(b圆圈)中的红色圆圈(b圆圈.rcille)。我已经尝试过在计时器事件处理程序(red顺时针)中更改红色圆圈(bcircle.rcircle)的x和y坐标。我将非常感谢在这方面的任何帮助。谢谢 我目前的代码如下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
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类来创建和定位这些元素中的每一个。这将大大降低你试图做的事情的复杂性
谢谢马蒂·华莱士,我正在考虑使用阵列。我将接受你所说的一切,然后继续。再次感谢。