actionscript-3 - 如何在数组中随机调用特定位置的 2 个值 flash
问题描述
我有3个mc。我想在舞台上的特定位置随机调用其中的 2 个。我不知道怎么称呼他们。我刚试过数组。我认为数组是最好的方法,但仍然很困惑。
这是我试过的代码:
import flash.geom.Point;
var Batumc:batu_mc = new batu_mc(); // creates a instance of the movieclip, i.e, an object
var Batumc1:L = new L();
var Pisangmc:pisang_mc = new pisang_mc();
var Batumc2:MovieClip = new MovieClip();
var Status:int = 0;
button.addEventListener(MouseEvent.CLICK, tombol);
function tombol(e:MouseEvent):void{
//addChild(Batumc);
//addChild(Batumc1);
//addChild(Pisangmc);
var P:Array = [new Point(80.2, 100), new Point(260, 100), new Point(430, 100)];
var M:Array = [Batumc, Batumc1, Pisangmc];
//random benda
var benda:int = Math.random()*M.length;
// Remove the selected benda from its list.
M.splice(benda, 1);
while (M.length){
// Get the last MovieClip and remove it from the list.
Batumc2 = M.pop();
trace(Batumc2);
// Produce a random Point.
var anIndex:int = Math.random() * P.length;
var aPo:Point = P[anIndex];
// Remove the selected Point from its list.
P.splice(anIndex, 1);
// Move the selected MovieClip to the selected Point coordinates.
Batumc2.x = aPo.x;
Batumc2.y = aPo.y;
addChild(Batumc);
addChild(Batumc1);
addChild(Pisangmc);
}
Status = 1;
}
button.addEventListener(Event.ENTER_FRAME, frame);
function frame(e:Event):void{
if(Status == 1 ){
removeChild(Batumc2);
Status = 0;
}
}
当我运行此代码时,有时会再次出现 3 mc
解决方案
我认为问题出在这一行:
M[i] = P.splice(randomPos, 1);
您将 M[i](mc 数组)分配给 P(点数组)中的值,因此 M[i] = 带有点的数组而不是 mc。
如果您想避免此类问题,您可以使用向量而不是数组。它更有效,并且还必须包含您声明的类型。 矢量类文档。
要使用向量,而不是:
var P:Array = [...];
var M:Array = [...];
做:
var P:Vector.<Point> = new <Number>[...];
var M:Vector.<MovieClip> = new <MovieClip>[...];
其余的就像数组(pop,push,slice,...)
要从 M 中删除项目,只需拼接 M,我不明白为什么需要迭代 M。
M.splice(randomPos, 1);
推荐阅读
- javascript - 当前时间最接近半小时与下一小时时间
- javascript - 有没有办法访问 ckeditor 元素的原始属性?
- docker - Windows 或非 Linux 操作系统容器如何在 Docker 中工作?
- bootstrap-4 - 与同位素过滤器冲突的 bootstrap 组件“崩溃”
- excel - 复制并粘贴列中的最后 5 个活动单元格
- testing - 哪些测试工具和方法支持 12 因子应用程序
- c++ - conan create 找不到依赖项
- unetstack - 如何在unetstack中找到节点的可用邻居
- c# - C# | DataGridView 值在末尾而不是开头
- sapui5 - 如何以编程方式触发智能字段值帮助的搜索?