Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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 如何堆叠MovieClips-AS3_Actionscript 3_Flash_Methods_Movieclip - Fatal编程技术网

Actionscript 3 如何堆叠MovieClips-AS3

Actionscript 3 如何堆叠MovieClips-AS3,actionscript-3,flash,methods,movieclip,Actionscript 3,Flash,Methods,Movieclip,我的问题如下: 我正在做一个游戏,有一个阶段书会掉下来 X轴(因为用户设备的方向是图片)和一只“小手”比拉它检测到的书本hitTestObject,X轴和Y轴成为“小手” 为了使书籍保持正确的堆叠状态,我在舞台上使用了一个名为“高度”的变量,书落在小手上,这个变量时间会随着书的高度而更新,然后我用这个变量将书放在X轴上 private function loop(event:Event){ var maozinha = palco.mao; if(t

我的问题如下:

我正在做一个游戏,有一个阶段书会掉下来 X轴(因为用户设备的方向是图片)和一只“小手”比拉它检测到的书本hitTestObject,X轴和Y轴成为“小手”

为了使书籍保持正确的堆叠状态,我在舞台上使用了一个名为“高度”的变量,书落在小手上,这个变量时间会随着书的高度而更新,然后我用这个变量将书放在X轴上

    private function loop(event:Event){

        var maozinha = palco.mao;

        if(this.hitTestObject(maozinha)){
            this.y = maozinha.y;
            this.x -= palco.altura;
            palco.velocidade = 10;
            palco.gravidade = 2;
            palco.altura += 47;
            palco.pontos += 20;
            isOnHand = true;
            removeEventListener(Event.ENTER_FRAME, loop);

        } else {
            palco.velocidade += palco.gravidade;
            x += palco.velocidade;
        }

        if(x >= 940){
            removeEventListener(Event.ENTER_FRAME, loop);
            palco.life = false;
            palco.removeChild(this);
        }   
      }
   }
我想知道的是,是否有某种方法可以让他们自动检测,甚至当他们触摸小手或他的兄弟时,他们检测到它并停在外点,我需要在不计算高度的情况下停留

下面是用作书籍的类模型

package  {

    import flash.display.MovieClip;
    import flash.events.*;
    import flash.events.MouseEvent;
    import flash.ui.Mouse;
    import flash.display.Sprite;
    import flash.display.*;

    public class Lverde extends Sprite {
        //VARS
        private var palco:Object;
        private var isOnHand:Boolean = false;

        public function Lverde() {
            addEventListener(Event.ADDED_TO_STAGE, inicia);
        }

        private function inicia(event:Event){
            addEventListener(Event.ENTER_FRAME, loop);
            addEventListener(Event.ENTER_FRAME, gameOverThis);
            addEventListener(Event.ENTER_FRAME, bookOnHand);
            addEventListener(Event.ENTER_FRAME, touchBook);
            addEventListener(Event.ENTER_FRAME, vitoria);
            palco = MovieClip(root);
        }

        private function gameOverThis(event:Event){
            if(palco.life == false){
                removeEventListener(Event.ENTER_FRAME, gameOverThis);
                removeEventListener(Event.ENTER_FRAME, bookOnHand);
                removeEventListener(Event.ENTER_FRAME, touchBook);
                removeEventListener(Event.ENTER_FRAME, vitoria);
                palco.removeChild(this);
            }
        }

        private function vitoria(event:Event){
            if(palco.pontos >= 200){
                palco.vitoria = true;
                palco.removeChild(this);
                removeEventListener(Event.ENTER_FRAME, gameOverThis);
                removeEventListener(Event.ENTER_FRAME, bookOnHand);
                removeEventListener(Event.ENTER_FRAME, touchBook);
                removeEventListener(Event.ENTER_FRAME, vitoria);
            }
        }

        private function bookOnHand(event:Event) {
            if(isOnHand == true){
                var maozinha = palco.mao;
                y = maozinha.y;
            }
        }

        private function touchBook(event:Event){
            if(isOnHand == false){
                for(var i:int = 0; i < palco.getChildByName("lverde").numChildren-1; i++){
                    var lverde = palco.getChildByName("lverde").getChildAt(i);

                    if(hitTestObject(lverde) && isOnHand == false){
                        palco.velocidade = 10;
                        palco.gravidade = 2;
                        palco.altura += 47;
                        palco.pontos += 20;
                        isOnHand = true;
                        trace("Tocou o livro verde");
                        removeEventListener(Event.ENTER_FRAME, loop);
                        removeEventListener(Event.ENTER_FRAME, touchBook);
                    }
                }

                for(var i:int = 0; i < palco.getChildByName("lvermelho").numChildren-1; i++){
                    var lvermelho = palco.getChildByName("lvermelho").getChildAt(i);

                    if(hitTestObject(lvermelho) && isOnHand == false){
                        palco.velocidade = 10;
                        palco.gravidade = 2;
                        palco.altura += 68;
                        palco.pontos += 20;
                        isOnHand = true;
                        removeEventListener(Event.ENTER_FRAME, loop);
                        removeEventListener(Event.ENTER_FRAME, touchBook);
                    }
                }

                for(var i:int = 0; i < palco.getChildByName("lmarrom").numChildren-1; i++){
                    var lmarrom = palco.getChildByName("lmarrom").getChildAt(i);

                    if(hitTestObject(lmarrom) && isOnHand == false){
                        palco.velocidade = 10;
                        palco.gravidade = 2;
                        palco.altura += 40;
                        palco.pontos += 20;
                        isOnHand = true;
                        removeEventListener(Event.ENTER_FRAME, loop);
                        removeEventListener(Event.ENTER_FRAME, touchBook);
                    }
                }
            }
        }

        private function loop(event:Event){

            var maozinha = palco.mao;

            if(this.hitTestObject(maozinha)){
                this.y = maozinha.y;
                this.x -= palco.altura;
                palco.velocidade = 10;
                palco.gravidade = 2;
                palco.altura += 47;
                palco.pontos += 20;
                isOnHand = true;
                removeEventListener(Event.ENTER_FRAME, loop);

            } else {
                palco.velocidade += palco.gravidade;
                x += palco.velocidade;
            }

            if(x >= 940){
                removeEventListener(Event.ENTER_FRAME, loop);
                palco.life = false;
                palco.removeChild(this);
            }   
        }
    }
}
包{
导入flash.display.MovieClip;
导入flash.events.*;
导入flash.events.MouseEvent;
导入flash.ui.Mouse;
导入flash.display.Sprite;
导入flash.display.*;
公共类Lverde扩展了Sprite{
//瓦尔斯
私有var-palco:对象;
私有变量isOnHand:Boolean=false;
公共职能部门{
addEventListener(Event.ADDED_至_阶段,inicia);
}
私有函数inicia(事件:事件){
addEventListener(Event.ENTER_FRAME,循环);
addEventListener(Event.ENTER_FRAME,gameOverThis);
addEventListener(Event.ENTER_FRAME,bookOnHand);
addEventListener(Event.ENTER_FRAME,touchBook);
addEventListener(Event.ENTER_FRAME,维多利亚);
palco=MovieClip(根);
}
私人功能游戏此(事件:事件){
if(palco.life==false){
removeEventListener(Event.ENTER_FRAME,gameOverThis);
removeEventListener(Event.ENTER_FRAME,bookOnHand);
removeEventListener(Event.ENTER_FRAME,touchBook);
removeEventListener(Event.ENTER_FRAME,维多利亚);
帕尔科·雷莫维奇(本);
}
}
私人功能维多利亚(活动:活动){
如果(palco.pontos>=200){
palco.vitoria=正确;
帕尔科·雷莫维奇(本);
removeEventListener(Event.ENTER_FRAME,gameOverThis);
removeEventListener(Event.ENTER_FRAME,bookOnHand);
removeEventListener(Event.ENTER_FRAME,touchBook);
removeEventListener(Event.ENTER_FRAME,维多利亚);
}
}
现有私人功能书(事件:事件){
如果(isOnHand==true){
var maozinha=palco.mao;
y=maozinha.y;
}
}
专用功能触摸簿(事件:事件){
如果(isOnHand==false){
对于(变量i:int=0;i=940){
removeEventListener(Event.ENTER_FRAME,循环);
生命=虚假;
帕尔科·雷莫维奇(本);
}   
}
}
}

谢谢你。

我大致知道你想说什么(老实说,这是用很蹩脚的英语写的)。 所以你的书从左到右掉落,你想让“小手”抓住它们。如果第一本书碰到手,它就会停在那里,粘在手上。 现在,有一种方法可以让其他书籍堆叠在顶部