Actionscript 3 电影重叠
我已经学习as3大约两周了 我想做一个组合生成器供个人使用 问题是,如果阵列中的同一个MovieClip显示两次或两次以上,它只会重叠 例如,当第二次显示弯头时,它仅与第一个弯头movieclip重叠 这是我的密码Actionscript 3 电影重叠,actionscript-3,Actionscript 3,我已经学习as3大约两周了 我想做一个组合生成器供个人使用 问题是,如果阵列中的同一个MovieClip显示两次或两次以上,它只会重叠 例如,当第二次显示弯头时,它仅与第一个弯头movieclip重叠 这是我的密码 var punch:Punch = new Punch(); var kick:Kick = new Kick(); var knee:Knee = new Knee(); var elbow:Elbow = new Elbow(); var holder:MovieClip; //
var punch:Punch = new Punch();
var kick:Kick = new Kick();
var knee:Knee = new Knee();
var elbow:Elbow = new Elbow();
var holder:MovieClip; // for displaying purposes
var position:Number = 100;
public function Main()
{
var combo:Array = [punch, kick, knee, elbow];
for(var i:Number = 0;i < 2;i++ )
{
holder = combo[randomNumber()]
holder.y = 200;
holder.x = position;
addChild(holder);
position = position + 100;
}
}
function randomNumber():Number
{
return(Math.floor(Math.random() * (4 - 1 )+1));
}
var-punch:punch=new-punch();
变量踢:踢=新踢();
var膝关节:膝关节=新膝关节();
变量弯头:弯头=新弯头();
var持有人:MovieClip;//用于展示目的
var位置:编号=100;
公共功能Main()
{
变量组合:数组=[拳、踢、膝、肘];
对于(变量i:Number=0;i<2;i++)
{
holder=组合[randomNumber()]
支架y=200;
支架x=位置;
儿童(持有人);
位置=位置+100;
}
}
函数randomNumber():Number
{
返回(Math.floor(Math.random()*(4-1)+1));
}
尝试如下更改代码:
public function Main()
{
var combo:Array = [Punch, Kick, Knee, Elbow];
for(var i:Number = 0;i < 2;i++ )
{
var motion:MovieClip = new combo[randomNumber()]();
motion.y = 200;
motion.x = i*100;
addChild(motion);
}
}
function randomNumber():Number
{
return(Math.floor(Math.random() * (4 - 1 )+1));
}
public函数Main()
{
变量组合:数组=[拳、踢、膝、肘];
对于(变量i:Number=0;i<2;i++)
{
var-motion:MovieClip=新组合[randomNumber()]();
运动y=200;
运动x=i*100;
addChild(动议);
}
}
函数randomNumber():Number
{
返回(Math.floor(Math.random()*(4-1)+1));
}
我认为您真正的问题是,您首先在该数组中多次存在对象。我想你需要增加两个肘部;一左一右。这意味着您需要2个弯头对象(对象的工作方式是,您有一个类,多个实例。同一个实例不能位于多个位置,因为它只有一组属性)
所以您需要制作(say)var-elbowL:弯头=新弯头();var elbowR:弯头=新弯头()
并将两者添加到数组中
至于重叠,我相信一个对象只能添加到舞台上一次,所以第二次添加它将取代第一次。在这种情况下,这没有什么区别(除了改变z顺序);只要更改弯头的
x
或y
属性,就会移动弯头。根据我上面建议的更改,这不再是一个问题。我假设您希望同时出现两个“肘部”?您只有一个肘部类的实例,所以这不起作用
我建议您使用一个接受整数的函数,并返回相应MovieClip的新实例:
function NewMove(id:int):MovieClip
{
switch(id)
{
case 1: return new Punch();
case 2: return new Kick();
case 3: return new Knee();
case 4: return new Elbow();
}
return new MovieClip();
}
所以你的代码应该是:
for(var i:Number = 0;i < 2;i++ )
{
holder = NewMove(randomNumber());
holder.y = 200;
holder.x = position;
addChild(holder);
position = position + 100;
}
for(变量i:Number=0;i<2;i++)
{
holder=NewMove(randomNumber());
支架y=200;
支架x=位置;
儿童(持有人);
位置=位置+100;
}
请您进一步解释一下,或者附上一些打印屏幕好吗?如果它显示两次的话?如果是,两者是否应该重叠?如果你把它们放在同一个地方,事情就会重叠,其他事情就做不到了。为什么你要复制这个:对不起,我不会再这样做了,我故意让它重复电影情节,如果possile@AlexisKyleSales不可能,,你需要这些文件的副本movieclips@AlexisKyleSales你到底想在舞台上看到什么?每部电影都有不同的xvalues@AlexisKyleSales伟大的很高兴有帮助