如何在Array中保存3个对象的位置,以便通过AS3在彼此之间建立随机位置?
import flash.geom.Point;
var arry:Point = new Point();
arry[0] = arry[78,200];
arry[1] = arry[217,200];
arry[2] = arry[356,200];
//object called b1
b1.x = arry[0][0];
b1.y = arry[0][1];
//object called b2
b2.x = arry[1][0];
b2.y = arry[1][1];
//object called b3
b3.x = arry[2][0];
b3.y = arry[2][1];
//make objects swap positions between each other
var rand:Number = (Math.random()*arry.length);
//output to see random position [[78,200],[217,200],[356,200]]
trace(arry);
像这样随机添加补间...... https://www.youtube.com/watch?v=8m_m64plQ6E
答案 0 :(得分:0)
在编译时你应该得到这个错误我想:" ReferenceError:错误#1069" 这是一种存储位置的方法(例如您在youtube中提供的链接):
display: none;
所以这里有九个点来放置视频中的剪辑。 您只需要添加一个函数来交换存储在另一个Vector中的九个框。 在你的情况下。
对于3个职位,如果我理解你的问题,请执行以下操作。
active-slide
答案 1 :(得分:0)
所以,你还不清楚! 你的问题是找一个随机的位置?
如果这是您面临的问题,这可能对您有所帮助:
import flash.geom.Point;
var positions:Vector.<Point > = new Vector.<Point > (3);
var numbers:Vector.<uint> = new Vector.<uint>();
var numbersAllowed:uint = 3;
var rndNmbrs:Vector.<uint> = new Vector.<uint>(3);;
var p1:Point = new Point(78,200);
var p2:Point = new Point(217,200);
var p3:Point = new Point(356,200);
positions[0] = p1;
positions[1] = p2;
positions[2] = p3;
trace(positions);
function populateRndNmbrs(n:uint):void {
for (var i:uint = 0; i < n; i++)
{
numbers[i] = i;
}
}
populateRndNmbrs(numbersAllowed);
function populateRandomNumbers(n:uint):void
{
var rnd:uint;
for (var i:uint = 0; i < n; i++)
{
rnd = numbers[Math.floor(Math.random() * numbers.length)];
for (var j:uint = 0; j < numbers.length; j++)
{
if (rnd == numbers[j])
{
numbers.splice(j,1);
}
}
rndNmbrs[i] = rnd;
}
}
populateRandomNumbers(numbersAllowed);
trace("rndNmbrs = " + rndNmbrs);
for (var i:uint = 0; i < numbersAllowed; i++)
{
trace("b"+ (i+1) + ".x = " + positions[rndNmbrs[i]].x);
trace("b"+ (i+1) + ".y = " + positions[rndNmbrs[i]].y);
// In place of trace, you should place the boxes at those random positions.;
}
//output:
//(x=78, y=200),(x=217, y=200),(x=356, y=200)
//rndNmbrs = 2,0,1
//b1.x = 356
//b1.y = 200
//b2.x = 78
//b2.y = 200
//b3.x = 217
//b3.y = 200
这就是你想要的吗?或者您想知道如何创建动作效果? 我不确定你真正需要什么...... 这将帮助您将所有框放在随机位置。
您可以像下面这样执行此操作,并添加一个函数来检查随机位置是否不相同。 只有3个MovieClip,你将经常拥有相同的随机位置,只要它们存储在&#34;位置Vector&#34;
var squares:Vector.<MovieClip> = new Vector.<MovieClip>(3);
function populateMCs(target:DisplayObjectContainer,n:uint):void{
for (var i:uint = 0; i < n; i++){
squares[i] = target["b"+(i+1)];
}
}
function swapMCs():void{
for (var i:uint=0; i<squares.length; i++){
squares[i].x = positions[rndNmbrs[i]].x;
squares[i].y = positions[rndNmbrs[i]].y;
}
}
populateMCs(this,numbersAllowed);
swapMCs();
答案 2 :(得分:0)
我举一个例子来说明在AS3中获得动作效果。 我不是翻译AS2 - &gt; AS3和视频不是显示代码的最佳方式:(
这将使您的盒子顺利移动,但不是您想要的方式。 现在,你必须学习AS3并尝试自己完成这项工作。
然后,如果您有其他问题,请明确询问您想要的内容。
sock_reader(...)