Actionscript 3 如何修复FlashCS6中plataform游戏(SuperMario)中运行时出现错误行为的新对象的创建?
我正在用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):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一样
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);我的问题消失了。不过,我不明白