Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 电影重叠_Actionscript 3 - Fatal编程技术网

Actionscript 3 电影重叠

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; //

我已经学习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; // 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伟大的很高兴有帮助