我正在使用闪存CS6开发平台游戏。我创建了一个名为Plataforma的类,它代表一个plataform并将其扩展为Item_Flor类,当与Mario发生碰撞时,它是一种特殊的plataform,显示一个由马里奥消耗的项目,一朵花。这样的项目是Flor类的对象(类名是葡萄牙语)。
然而,当Mario与类Item_Flor的对象相关时,对象:i)没有出现在正确的位置(即,在Item_Flor的对象之上); ii)当Marios移动时,物体也会在Mario的相同方向上移动,就像这样的物体的x和y被马里奥的坐标修改一样; iii)当马里奥与项目ii碰撞时,似乎只有一朵花。
这是类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{
...
}
}
}
我想知道如何才能找到花必须固定的地方,这样它就能独立于马里奥运动而站在这样的平台上?
我正在粘贴一个链接,您可以在其中下载代码以进行编译并查看剩余代码:https://www.4shared.com/rar/r6ppko4Cei/mario-flashCS6.html
感谢您帮助我!