【发布时间】:2011-11-23 17:38:42
【问题描述】:
我正在尝试找到一种同时使用 TweenMax 和 flash 的绘图类的好方法,但它总是卡住并导致 flash 播放器崩溃,我真的不知道出了什么问题。实际上,我要做的就是确保当两个(或更多)由一条线连接的圆圈移动时,它们之间的线会跟随。这是我的代码:
import com.greensock.TweenMax;
var sw = stage.stageWidth;
var sh = stage.stageHeight;
var cr = 3; //circle radius
var moveRange = 20;
var circleColor = 0xcccccc;
var numCircles = 2;
var circleArray = [];
var lineCanvas:Sprite = new Sprite();
addChild(lineCanvas);
var lineColor = 0xe9e9e9;
var lineWeight = 1;
function init(){
drawCircle();
}
function drawCircle(){
for (var i = 0; i<numCircles; i++){
var xPos = randomRange(cr, sw-cr);
var yPos = randomRange(cr, sh-cr);
var newCircle:Shape = new Shape();
newCircle.graphics.beginFill(circleColor);
newCircle.graphics.drawCircle(0,0,cr);
newCircle.x = xPos;
newCircle.y = yPos;
newCircle.graphics.endFill();
circleArray.push(newCircle);
addChild(newCircle);
}
drawLine();
}
function drawLine(){
for (var i = 0; i<numCircles-1; i++){
lineCanvas.graphics.clear();
lineCanvas.graphics.lineStyle(lineWeight,lineColor);
lineCanvas.graphics.moveTo(circleArray[i].x,circleArray[i].y);
lineCanvas.graphics.lineTo(circleArray[i+1].x,circleArray[i+1].y);
}
moveCircle();
}
function moveCircle(){
for (var i = 0; i<numCircles; i++){
var curX = circleArray[i].x;
var curY = circleArray[i].y;
var moveX = randomRange(curX-moveRange,curX+moveRange);
var moveY = randomRange(curY-moveRange,curY+moveRange);
//TweenMax.to(circleArray[i],.5, { x: moveX, y: moveY, onUpdate:drawLine });
}
}
function randomRange(minNum:Number, maxNum:Number):Number {
return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
}
init();
有没有更好的方法来做到这一点?我不应该使用补间库吗?
【问题讨论】:
-
对于某些事情,使用 ENTER_FRAME 侦听器并手动移动对象比使用 Tween-Engine/Library 更容易......只是说;)
-
你有我如何修改代码来做到这一点的例子吗?
-
我发布了一个 ENTER_FRAME 的例子
标签: flash actionscript-3 graphics drawing tween