Flash Platformer游戏在两个角色之间切换

时间:2014-05-27 13:36:18

标签: actionscript-3 flash

所以我对整个编码很陌生,虽然在我绝对失败之前我曾与AS搞过一点。我一直在使用pretty helpful website逐步制作平台游戏/侧面滚轮,但我希望在游戏中包含的一个关键因素是能够在两个角色之间切换 - 也就是说,如果玩家击中空格或任何其他键,你可以换掉另一个角色(具有不同的能力和所有)。

我的游戏只有一个大舞台,它根本没什么复杂的(它是我试图在24小时内完成的事情)这就是为什么我决定不为每个"等级进行角色更改 - 因为那里只有一个大角色。我希望玩家能够决定何时想要玩他们喜欢的任何角色,但我不知道如何去做。

呃,如果它有助于澄清任何事情,我基本上试图尽可能密切地关注该教程网站而不复制源代码。

非常感谢您抽出宝贵时间。

1 个答案:

答案 0 :(得分:0)

你需要做一个名为"与代码分开的图形"。教程说"将你的播放器转换为电影剪辑符号...创建新播放器(),将其添加到舞台",然后教它如何控制播放器。您需要将Player类拆分为两个,一个保留为Player并包含代码,另一个是皮肤类,几乎没有代码的MovieClip。在你的Player课程中,你需要制作一个操作皮肤的方法,界面取决于你,我建议对皮肤类进行字符串查找,然后你可以告诉你的玩家在建造时间和可能的时候改变皮肤在运行时。一个例子:

public static const SKIN_DEFAULT:String="default";
public static const SKIN_RED:String="red";
public static const SKIN_BLUE:String="blue";
private static var SKINS:Object={
    SKIN_DEFAULT:DefaultFace;
    SKIN_RED:RedFace;
    SKIN_BLUE:BlueFace;
}

这里,SKINS是一个查找对象,其键为字符串,值为Class引用,这些是示例期望存在的MovieClip符号名称。假设您想要一个灰色的斑点,一张红色的愤怒的脸和一个蓝色的笑脸保存,您可以将它们命名为DefaultFaceRedFaceBlueFace并将这些名称放入此查找对象中。然后,你需要让你的玩家改变皮肤。一旦你完成演练,这很容易。

public class Player extends Sprite {
    // Sprite should do, as Player is now code-only
    private var skin:MovieClip; // this will hold our player's skin
    public function setSkin(newSkin:String):void {
        // call this to change the skin
        var newSkin:Class=SKINS[newSkin] as Class;
        if (newSkin==null) return; // sanity check
        if (skin) if (skin is newSkin) return; 
        // ^ changing skin for the same? We're that skin already!
        if (skin) if (contains(skin)) removeChild(skin); // remove old skin
        skin=new newSkin(); // create a new skin object
        addChild(skin); // make it attached to the player
    } // we're done!
    // rest of code here
}

确保您的Player在创建时至少会出现默认皮肤,否则您将无法看到玩家移动。

为了触发皮肤更改,您可以创建一个按钮数组,最多可以将它们排除在所有可能的SKINS之外(为此,通过声明SKINS来公开public变量player.setSkin()而不是现在的私有,或者提供另一种获取类列表的方法),这将使用正确的参数调用{{1}}。