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 如何修复FlashCS6中plataform游戏(SuperMario)中运行时出现错误行为的新对象的创建?_Actionscript 3_Flash_Flash Cs6 - Fatal编程技术网

Actionscript 3 如何修复FlashCS6中plataform游戏(SuperMario)中运行时出现错误行为的新对象的创建?

Actionscript 3 如何修复FlashCS6中plataform游戏(SuperMario)中运行时出现错误行为的新对象的创建?,actionscript-3,flash,flash-cs6,Actionscript 3,Flash,Flash Cs6,我正在用flash CS6开发一个平台游戏。我创建了一个名为Plataforma的类,它代表一个plataform,并将其扩展为Item_Flor类,该类在与Mario碰撞时显示一个物品,一朵花,供Mario消费,是一种特殊的plataform。该项是Flor类的对象(类名为葡萄牙语) 但是,当Mario与Item_Flor类对象合并时,对象:i)未出现在正确的位置(即Item_Flor对象的顶部);ii)当马里奥移动时,对象也会沿着马里奥的同一方向移动,就像马里奥坐标修改了对象的属性x和y一样

我正在用flash CS6开发一个平台游戏。我创建了一个名为Plataforma的类,它代表一个plataform,并将其扩展为Item_Flor类,该类在与Mario碰撞时显示一个物品,一朵花,供Mario消费,是一种特殊的plataform。该项是Flor类的对象(类名为葡萄牙语)

但是,当Mario与Item_Flor类对象合并时,对象:i)未出现在正确的位置(即Item_Flor对象的顶部);ii)当马里奥移动时,对象也会沿着马里奥的同一方向移动,就像马里奥坐标修改了对象的属性x和y一样;iii)当马里奥与第二项碰撞时,似乎只有一朵花被创造出来

下面是Item_Flor类的代码,函数enterFrameEvents2验证mario何时与Item_Flor的对象发生碰撞并创建Flor类的对象花(以下为Flor):

package  {

  import flash.display.MovieClip;
  import flash.display.*;
  import flash.events.*


  public class Item_Flor extends Plataforma {

    public function Item_Flor() {
        super();
        addEventListener(Event.ENTER_FRAME, enterFrameEvents2);
    }

    private function enterFrameEvents2(event:Event):void{

        if(this.hitTestObject(getMario())){      

            var flor:MovieClip = new Flor();
            flor.x =this.x;
            flor.y =this.y-flor.height;
            getRoot().stage.addChild(flor);        
       }

   }
  } 
}
对象flor在我的代码中没有出现在任何其他位置,因此我不知道当Mario移动时,它的x和y位置发生了什么变化

以下是Plataforma类的代码:

package  {

  import flash.display.MovieClip;
  import flash.display.*;
  import flash.events.* 

  public class Plataforma extends MovieClip{

    private var _root:MovieClip;
    private var mario:MovieClip;
    private var onTop:Boolean;

    public function Plataforma() {          
        addEventListener(Event.ADDED_TO_STAGE, beginClass);         
        addEventListener(Event.ENTER_FRAME, enterFrameEvents);      
    }       

    private function beginClass(event:Event):void{

        _root = MovieClip(root);
        mario = _root.mario;
        onTop = false;          
    }

    public function getMario():MovieClip {
        return mario;
    }

    public function getRoot():MovieClip {
        return _root;
    }

    private function enterFrameEvents(event:Event):void{
      ...
    }
 }
}
我想知道,我怎样才能找到一个地方,让花看起来是固定的,这样,它就可以独立于马里奥的运动而屹立在这样的平台上

我正在粘贴一个链接,您可以在其中下载代码进行编译,并查看剩余的代码:


谢谢你帮助我

至少。。。使用一个固定的数字代替
flor.x=this.x工作?类似于
flor.x=50
应该停止“跟着马里奥转”的问题。幸运的是,你的建议不起作用。通过一些测试,我发现我总是在运行时创建一个对象,这样的问题在该对象中仍然存在。但是,如果在运行游戏之前在舞台上拖放符号,则该符号的出现不会出现问题。嗯,我使用vcam在游戏中产生滚动效果,我删除了vcam以查看发生了什么,运行时创建的所有对象的问题都消失了。但我需要滚动效果。我不知道发生了什么事。非常感谢。vcam的代码为:vcam.addEventListener(Event.ENTER_FRAME,movements);函数移动(event:event){vcam.y+=(mario.y-vcam.y)/4;vcam.x+=(mario.x-vcam.x)/4;}我可能错了,但你不移动所有平台,而mario看起来就站在同一个地方吗?你把你的花放在主舞台上,然后它就不动了——就像马里奥一样,看起来它们在一起移动。你应该将花添加到围绕mario移动的层中(可能是所有平台的容器),谢谢!我将语句getRoot().stage.addChild(flor)更改为getRoot().addChild(flor);我的问题消失了。不过,我不明白